购物网站如何备案,怎么在百度上推广自己的店铺,哪个网站做初中作业,商标设计网课前言#xff1a;谢谢阿秀#xff0c;指路阿秀的学习笔记 一、基础语法
1.构造和析构:
类的构造函数是一种特殊的函数#xff0c;在创建一个新的对象时调用。类的析构函数也是一种特殊的函数#xff0c;在删除所创建的对象时调用。
构造顺序#xff1a;父类-子类
析…前言谢谢阿秀指路阿秀的学习笔记 一、基础语法
1.构造和析构:
类的构造函数是一种特殊的函数在创建一个新的对象时调用。类的析构函数也是一种特殊的函数在删除所创建的对象时调用。
构造顺序父类-子类
析构顺序子类-父类 2.函数重载和运算符重载
函数重载在同一作用域内可以声明多个重名函数其函数参数的个数或顺序或类型必须不同不能仅通过返回类型的不同来重载函数。
运算符重载运算符重载函数是类的成员函数(法一)时它的第一个操作数是调用该函数的对象即 this 指针指向的对象第二个操作数是通过参数传递的对象。
Box operator(const Box b) {Box box;box.length this-length b.length;box.breadth this-breadth b.breadth;box.height this-height b.height;return box;
}
上述代码是针对的重载可以实现两个Box对象的相加。 例Box3Box1Box2 实际上相当于 Box1.operator(Box2); 还有一种方式是通过全局函数的方式重载(定义在类外面)
Box operator(const Box a, const Box b) {Box box;box.setLength(a.getLength() b.getLength());box.setBreadth(a.getBreadth() b.getBreadth());box.setHeight(a.getHeight() b.getHeight());return box;
}
调用方式依然是Box3Box1Box2。此时编译器会将其解释为Box3 operator(Box1, Box2);
3.结构体内存对齐 含义以空间换时间使一次访存可以取出一条指令加快存取速度常用于RISC指令流水线。 在按字节编址的计算机中char对齐值是1int是4double是8。结构体的默认对齐值是其所有成员中最大的对齐值。 struct的长度必须是成员中最大对齐值的整数倍不够补空字节。 可查看struct大小
struct Example {char a; // 1 字节int b; // 4 字节double c; // 8 字节
};
cout Size of Example: sizeof(Example) endl;
如何控制内存对齐方式 1. c11提供了alignas可以指定结构体对齐方式。
struct alignas(16) Example {char a;int b;double c;
}; 注意事项alignas的对齐值必须是2的幂次倍且不能小于结构体最小成员对齐值。 当指定数值小于默认值的时候alignas无效。 2.#pragma pack(push,n) alignas无效时使用#pragma强制将对齐方式设置为 n 字节