Effective C++ 条款5
来源:互联网 发布:知乎怎么回答 编辑:程序博客网 时间:2024/05/16 17:16
了解C++默认编写并调用哪些函数
本节有两处知识点。
首先
对于一个class
1.如果class中没有任何构造函数,那么编译器为class声明一个default默认构造函数。
2.如果class没有析构函数、copy构造函数、copy assignment运算符则class声明这三个函数。
3.只有当调用析构函数、copy构造函数、copy assignment运算符时,编译器才生成它们,请大家分清楚,声明和生成是两码事。
如下代码:
//定义的classclass Empty{};//编译器声明的classclass Empty{public: Empty(){} Empty(const Empty& rhs){} Empty& operator=(const Empty& rhs){} ~Empty(){}};
其次
当类中存在引用类型的数据或者const类型数据。则编译器拒绝自动生成copy assignment运算符函数。除非你自己定义
如下代码:
//对于这个类,编译器不会自动生成copy assignment template<typename T>class NamedObject{public: NamedObject(const char* name, const T& value); NamedObject(const std::string& name, const T& value);private: std::string& nameValue; const T objectValue;};
1 0
- 《effective C++》条款5
- 《Effective C++》构造/析构/赋值 函数:条款5-条款9
- Effective C++(条款5-12)
- Effective C++:条款01
- Effective C++:条款02
- Effective C++:条款03
- Effective C++:条款04
- Effective C++:条款05
- Effective C++:条款06
- Effective C++:条款07
- Effective C++:条款08
- 《effective C++》条款三
- 《effective C++》条款六
- Effective C++--经验条款
- Effective C ++ 条款34
- 《Effective C++》条款05
- 《Effective C++》条款06
- 《Effective C++》条款08
- 新的开始
- 网络编址与端口配置
- 目标检测的图像特征提取之(一)HOG特征
- java笔记28 GUI
- TextField的键盘的类型
- Effective C++ 条款5
- 浙江大学PAT_甲级_1084. Broken Keyboard (20)
- Eclipse J2EE+Maven+Tomcat(Jetty)构建Spring MVC项目
- 日经春秋 20150621
- CSS,background-image网页效果不显示问题
- 日经社説 20150621 協力の芽を育み強固な日韓関係を
- composer干嘛这么神经?
- ASP.NET定时执行任务
- asp.net web 服务器端全局定时执行任务