随笔分类 -  C++学习

摘要:关键字restrict只用于限定指针;该关键字用于告知编译器,所有修改该指针所指向内容的操作全部都是基于(base on)该指针的,即不存在其它进行修改操作的途径;这样的后果是帮助编译器进行更好的代码优化,生成更有效率的汇编代码。 举个简单的例子 很显然函数foo()的返回值是0,除非参数x和y的值 阅读全文
posted @ 2018-05-05 16:00 ZYVV
摘要:转自:http://www.189works.com/article-42025-1.html 怎样在set中放入自定义类型?这个问题通过谷歌就可以得到不少答案:1、定义一个函数对象并在定义set的时候将其作为第二个模板参数。2、为自定义类型定义<运算符。如: 其实两种方法的道理是一样的,就是set 阅读全文
posted @ 2018-04-02 20:22 ZYVV 阅读(1252) 评论(0) 推荐(0)
摘要:前言 在这个多核时代,如何充分利用每个 CPU 内核是一个绕不开的话题,从需要为成千上万的用户同时提供服务的服务端应用程序,到需要同时打开十几个页面,每个页面都有几十上百个链接的 web 浏览器应用程序,从保持着几 t 甚或几 p 的数据的数据库系统,到手机上的一个有良好用户响应能力的 app,为了 阅读全文
posted @ 2018-04-02 20:16 ZYVV 阅读(278) 评论(0) 推荐(0)
摘要:impl(pointer to implementation, 指向实现的指针)是一种常用的,用来对“类的接口与实现”进行解耦的方法。这个技巧可以避免在头文件中暴露私有细节(见下图1),因此是促进API接口与实现保持完全分离的重要机制。但是Pimpl并不是严格意义上的设计模式(它是受制于C++特定限 阅读全文
posted @ 2018-04-02 19:13 ZYVV 阅读(347) 评论(0) 推荐(0)
摘要:1.常规switch 2.多态+std::map取代switch 上述完全是一个面向过程到面向对象的转变:将每个case分支都作为一个子对象,然后用C++语言的多态性去动态绑定。这样做确实是带来了性能上的损失,但是在当今的CPU计算能力而言,这是可以忽略的,而它带来的好处却很有用:(1)分支的增减只 阅读全文
posted @ 2018-04-02 19:07 ZYVV 阅读(4401) 评论(0) 推荐(0)
摘要:reinterpret_cast <new_type> (expression) reinterpret_cast运算符是用来处理无关类型之间的转换;它会产生一个新的值,这个值会有与原始参数(expressoin)有完全相同的比特位。 什么是无关类型?我没有弄清楚,没有找到好的文档来说明类型之间到底 阅读全文
posted @ 2018-01-05 16:39 ZYVV
摘要:在C++中,mutable是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中,甚至结构体变量或者类对象为const,其mutable成员也可以被修改。 mutable在类中只能够修饰非静态数据成员。mutable 数据成员的使用看上去像是 阅读全文
posted @ 2017-09-15 15:18 ZYVV
摘要:const对象默认为文件的局部变量,与其他变量不同,除非特别说明,在全局作用域的const变量时定义该对象的文件局部变量。此变量只存在于那个文件中中,不能别其他文件访问。要是const变量能在其他文件中访问,必须显示的指定extern(c中也是) 当你只在定义该const常量的文件中使用该常量时,c 阅读全文
posted @ 2017-09-15 15:05 ZYVV
摘要:二维数组初始化的形式为: 数据类型 数组名[整常量表达式][ 整常量表达式]={ 初始化数据 }; 在{ }中给出各数组元素的初值,各初值之间用逗号分开。把{ }中的初值依次赋给各数组元素。 有如下几种初始化方式: ⑴ 分行进行初始化 int a[2][3]={{1,2,3},{4,5,6}}; 在 阅读全文
posted @ 2017-09-11 10:42 ZYVV
摘要:以下是dbzhang关于qt中文乱码问题原因的阐述,觉得不错: 首先呢,声明一下,QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString。很简单的问题,"我是中文"这样写的时候,它是传统的 char 类型的窄字符串 阅读全文
posted @ 2017-08-13 15:59 ZYVV
摘要:输出结果: 可见boolalpha的作用是使bool型变量按照false、true的格式输出。如不使用该标识符,那么结果会按照1、0的格式输出。这个setw等格式化输出类似。 阅读全文
posted @ 2017-06-11 21:22 ZYVV 阅读(1781) 评论(0) 推荐(1)
摘要:解释一: 每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。程序员可以通过预编译命令#pragma pack(n),n=1,2,4,8,16来改变这一系数,其中的n就是你要指定的“对齐系数”。 规则: 1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一 阅读全文
posted @ 2017-06-11 21:09 ZYVV 阅读(612) 评论(0) 推荐(0)
摘要:这是程序员面试的一道常见题,也是个C++基础问题。若只在大学里看过几本基础的编程入门书,看见这道题可能会觉得奇怪,不就是和0比较吗,直接拿出来比就是了,其实非也。下文引自google搜索结果,出处不详,高手可以无视,菜菜留下,记得做好笔记。首先给个提示:题目中要求的是零值比较,而非与0进行比较,在C 阅读全文
posted @ 2017-06-11 21:04 ZYVV 阅读(6280) 评论(0) 推荐(0)
摘要:在标准C和C++中0长数组如charArray[0]是不允许使用的,因为这从语义逻辑上看,是完全没有意义的。 但是,GUN中却允许使用,而且,很多时候,应用在了变长结构体中,如: 首先对0长数组做一个解释: 用途 :长度为0的数组的主要用途是为了满足需要变长度的结构体。 用法 :在一个结构体的最后  阅读全文
posted @ 2017-06-11 20:58 ZYVV 阅读(363) 评论(0) 推荐(0)
摘要:近来用Qt编写一段多线程的TcpSocket通信程序,被其中Qt中报的几个warning搞晕了,一会儿是说“Cannot create children for a parent that is in a different thread”,有时候又是“QSocketNotifier: socket 阅读全文
posted @ 2017-05-03 16:20 ZYVV 阅读(4338) 评论(0) 推荐(0)
摘要:c++ 的 STL 中主要有 vector , list, map, set , multimap,multiset 这些容器完全支持使用内置类型和指针(指针注意内存泄露问题)。 就是说乱用智能指针或其他指针作为容器元素,有可能2个元素指向同一个对象,2个元素(指针)对应一个对象,甚至更多 C++ 阅读全文
posted @ 2017-05-03 16:06 ZYVV 阅读(1854) 评论(0) 推荐(0)
摘要:我们在之前的博文QVector的内存分配策略 与再谈QVector与std::vector——使用装饰者让std::vector支持连续赋值中简单聊了聊QVector内存分配和赋值方面的一点东西,今天接着从QVector展开谈谈Qt的写时复制技术。老实说,“隐式共享,引用计数,写时复制”也是老调重弹 阅读全文
posted @ 2017-05-03 15:33 ZYVV 阅读(3178) 评论(0) 推荐(0)
摘要:一. 什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。 下面看一个类对象拷贝的简单例子。 运行程序,屏幕输出100。从以上代码的运行结果可以看出,系统为对象 B 分配了内存并完成了与对象 A 的复 阅读全文
posted @ 2017-05-03 15:16 ZYVV 阅读(305) 评论(0) 推荐(0)
摘要:1、vector 容器 vector 的数据安排以及操作方式,与 array 非常相似。两者的唯一区别在于空间的运用的灵活性。array 是静态空间,一旦配置了就不能改变,vector 是动态数组。在堆上分配空间。vector 是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素(有保 阅读全文
posted @ 2017-05-03 14:48 ZYVV 阅读(256) 评论(0) 推荐(0)
摘要:服务器: incomming incomming.pro #------------------------------------------------- # # Project created by QtCreator 2016-04-08T09:25:22 # #------------------------------------------------- QT +=... 阅读全文
posted @ 2017-05-03 14:46 ZYVV 阅读(4898) 评论(0) 推荐(0)