摘要:
1.类成员中存在常量,如const int a,只能用初始化不能复制 2.类成员中存在引用,同样只能使用初始化不能赋值。 3.提高效率 关于提高效率在《Effective C++》条款12 尽量使用初始化而不要在构造函数里赋值,是这样说的: 前面最初的类模板不包含 const 和引用成员。即使这样, 阅读全文
摘要:
《C++应用程序性能优化》《深度探索C++对象模型》笔记 运行结果: 解析:静态数据成员static int count 存储在全局/静态存储区中,并不作为对象占据的内存的一部分,sizeof返回的大小不包括count所占据的内存的大小,而非静态数据成员int value和char c存储在对象占据 阅读全文
摘要:
在服务器端,socket()返回的套接字用于监听(listen)和接受(accept)客户端的连接请求。这个套接字不能用于与客户端之间发送和接收数据。 accept()接受一个客户端的连接请求,并返回一个新的套接字。所谓“新的”就是说这个套接字与socket()返回的用于监听和接受客户端的连接请求的 阅读全文
摘要:
注:下面的所有结果都是在小端机器上实现的。 union:多个变量共享一块内存 运行结果: 解释:下面是变量在内存中的存放位置 变量a内存大小是4个字节,所以存放在整个内存中,变量b内存大小是一个字节,所以只是存放在内存的低地址的第一个字节,小端机器上会把低位字节存放在低位地址上,当做aa.a=1;时 阅读全文
摘要:
以下均是在VS2017下的结果 结构体内存大小的计算: 用例一: 输出 16 解析:对齐规则是按照成员的声明顺序,依次安排内存,对齐字节数为最大成员变量的字节大小,偏移量为最大成员变量的字节数的整数倍,在这个程序中对齐字节数为4,计算步骤如下: 首先是temp1 四个字节,temp2 一个字节,还剩 阅读全文
摘要:
大端:高位字节存放在低位地址,低位字节存放在高位地址 小端:高位字节存放在高位地址,低位字节存放在低位地址 运行结果为: 解析:union是多个变量共享一块内存,此时我们的union中是int 类型的a变量和char 类型的b变量共享一块内存,这块内存的大小是4个字节,而b变量只需要一个字节大小的内 阅读全文
摘要:
实例一: 上面这个程序出现的问题是: GetMemory不能动态传递内存,str一直是NULL,strcpy(str,”hello”)会使得程序奔溃 如果要使得GetMemory能够动态传递内存有两种方法可是现实,第一种是用指针的指针来实现,另一种是用指针的引用来实现。 先说第一种,用指针的指针来实 阅读全文
摘要:
题目是: 输出结果为: 7 12 解析 先看两个公式&a+i=a+i*sizeof(a); a+i=a+i*sizeof(a[0]); int *ptr=(int*)(&a+1);首先是指向数组a的最后一个元素的下一位,接着是用(int*)进行类型转换,把三维数组转换为一维数组,这是后ptr指针指向 阅读全文