笔记--Effective C++ 条款5:了解C++默默编写并调用了那些函数?
空类 != 空类
- 默认构造函数(没有声明任何构造函数)
- 拷贝构造函数
- 拷贝操作构造函数符号 =
编译器自己产生的只是针对 non-static 成员进行简单的拷贝。
class APP
{
public:
void set_x(int x);
private:
int _x;
friend std::ostream& operator<<(std::ostream& os, const APP& data);
};
int main()
{
// 默认构造函数(编译器自动生成)
APP a1;
a1.set_x(1);
std::cout << a1;
// 默认拷贝构造函数(编译器自动生成)
APP a2(a1);
std::cout << a2;
// 默认拷贝赋值操作(编译器自动生成)
a1.set_x(2);
APP a3 = a1;
std::cout << a3;
return 0;
}
编译器自动生成的构造函数,只是简单的值拷贝。假设成员中包含指针类的参数,那么也只是把指针指向地址拷贝过去。
只知道方法,却忘记了努力,因小失大。

浙公网安备 33010602011771号