《Effective C++》条款05
2017-10-19 17:33
197 查看
条款05:了解C++默默编写并调用了哪些函数
当你写了如下的一个空类的时候:
其实编译器默默为你提供了以下一些函数,就相当于你写了如下的代码:
注意:
(1)当你声明了一个构造函数,编译器于是不再为它创建默认构造函数
(2)当你打算在一个内含引用成员的class内支持赋值操作,你必须自己定义赋值运算符重载。
(3)面对内含const成员的class,更改const成员是不合法的,所以编译器不知道如何在它自己生成的赋值函数面对他们。
当你写了如下的一个空类的时候:
class Test{};
其实编译器默默为你提供了以下一些函数,就相当于你写了如下的代码:
class Test { public: Test(); //默认构造函数 Test(const Test &right); //拷贝构造函数 ~Test(); //析构函数(编译器产生的析构函数是非虚的) Test& operator=(const Test &right); //赋值运算符重载 };
注意:
(1)当你声明了一个构造函数,编译器于是不再为它创建默认构造函数
(2)当你打算在一个内含引用成员的class内支持赋值操作,你必须自己定义赋值运算符重载。
(3)面对内含const成员的class,更改const成员是不合法的,所以编译器不知道如何在它自己生成的赋值函数面对他们。
相关文章推荐
- 《Effective C++ 3》05 实现 条款:26-31
- Effective C++ 条款05:了解C++编写并调用哪些函数
- Effective C++:条款05:了解C++默默编写并调用哪些函数
- Effective C++:条款05
- Effective C++ 条款05 什么时候不应该使用编译器默认提供的函数
- effective C++ 条款05 to 条款12
- Effective C++学习笔记 条款05:了解C++默默编写并调用的哪些函数
- 《Effective C++ 》学习笔记——条款05
- Effective C++_笔记_条款05_了解C++默认编写并调用哪些函数
- effective c++ 条款05、06(编译器自动生成函数)整理
- 《Effective C++》学习笔记条款05了解C++默默编写并调用哪些函数
- Effective C++ -----条款05:了解C++默默编写并调用哪些函数
- Effective C++学习5 条款05:了解C++默默编写并调用了哪些函数
- 《Effective C++ 3》02 构造/析构/赋值 条款: 05-12
- 读书笔记《Effective c++》 条款05 了解c++默默编写并调用哪些函数
- [Effective C++]条款05 了解C++默默编写并调用哪些函数
- Effective C++:条款44:将与参数无关的代码抽离template
- Effective C++ 条款 48:认识template元编程
- 读书笔记《Effective c++》 条款07 为多态基类声明virtual析构函数
- Effective C++ 条款1:尽量用const和inline而不用#define