Effective C++ 条款5

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

本节有两处知识点。

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

如下代码:

{};{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

相关文章:

你感兴趣的文章:

标签云: