您的位置:首页 > 编程语言 > C语言/C++

Effective C++学习笔记 条款06:如不想使用编译器自动生成的函数,就该明确拒绝

2014-10-31 00:13 731 查看
一、为驳回编译器自动提供的机能,可将相应成员函数声明为private并且不予实现。(如果你仅仅是自己不实现的话,编译器会帮你实现)

  如:

class A
{
public:
A(const string& name):m_name(name) {}
private:
//拒绝copy和赋值,声明为private,并且只声明不实现
A(const A&);
A& operator=(const A&);
private:
string m_name;
};


二、对于拒绝赋值的copy的类,也可以继承一个Uncopyable的基类。

class Uncopyable
{
public:
Uncopyable() {}
~Uncopyable() {}
private:
Uncopyable(const Uncopyable&);
Uncopyable& operator=(const Uncopyable&);
};

class A: public Uncopyable // 继承Uncopyable不一定要是public !
{
public:
A(const string& name): m_name(name) {}
private:
string m_name;

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐