C++ =default,=delete的使用
/**
* @brief: C++11(6) C98(4) 编译器为类默认生成
* 默认构造函数、默认析构函数
* 默认拷贝构造函数、默认赋值函数
* 移动构造函数(C11)、移动拷贝函数(C11)
* = default 只能针对特殊的
* == delete 可成员
*/
template<typename T>
class Leaf
{
public:
Leaf() = default; //= default可有可无
~Leaf() = default;
//戈特弗里德·威廉·莱布尼茨(Gottfried Wilhelm Leibniz)说过
//“世上没有两片完全相同的树叶”,
//所以不能拷贝和赋值
Leaf(Leaf &) = delete;
Leaf& operator=(Leaf &) = delete;
public:
void setWeight(T weiValue); // 设置树叶重量,这里主要是想用模板
T getWeight();
public:
void growUp(); // 可以长大
void growDown() = delete; // 但不可以长小吧
private:
T m_weight; //重量
T m_age;
};
//vector<Leaf<float>> leafs;