码迷,mamicode.com
首页 > 编程语言 > 详细

Effective C++ 条款5

时间:2015-06-21 09:19:57      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:default

了解C++默认编写并调用哪些函数

本节有两处知识点。

首先
对于一个class
1.如果class中没有任何构造函数,那么编译器为class声明一个default默认构造函数。
2.如果class没有析构函数、copy构造函数、copy assignment运算符则class声明这三个函数。
3.只有当调用析构函数、copy构造函数、copy assignment运算符时,编译器才生成它们,请大家分清楚,声明和生成是两码事。

如下代码:

//定义的class
class Empty{
};
//编译器声明的class
class 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;
};

Effective C++ 条款5

标签:default

原文地址:http://blog.csdn.net/u011058765/article/details/46580411

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!