首页 > 代码库 > Effective C++学习笔记 条款06:如不想使用编译器自动生成的函数,就该明确拒绝
Effective C++学习笔记 条款06:如不想使用编译器自动生成的函数,就该明确拒绝
一、为驳回编译器自动提供的机能,可将相应成员函数声明为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;};
Effective C++学习笔记 条款06:如不想使用编译器自动生成的函数,就该明确拒绝
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。