栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

最近开始看《Effective C++》,为了方便以后回顾,特意做了笔记。若本人对书中的知识点理解有误的话,望请指正!!!

若想禁用拷贝构造函数和拷贝赋值运算符,可以在 private 权限中声明拷贝构造函数和拷贝赋值运算符,如下述代码:

class HomeSale{
public:
    HomeSale(int no):m_no(no){};
private:
    HomeSale(const HomeSale&);//因为不打算实现,可以省略参数名称
    HomeSale& operator=(const HomeSale&);
    
    int m_no;
}

int main()
{
    HomeSale h1(10);
    HomeSale h2(20);
    HomeSale h3(h1);	//编译不通过
    h1 = h2;			//编译不通过
    return 0;
}

还可以在一个专门的类 Uncopyable 内阻止拷贝行为,将需要禁止拷贝行为的类继承Uncopyable ,编译器创建的拷贝函数和拷贝赋值运算符会尝试调用其基类的兄弟,那些调用会被编译器拒绝,因为private 权限内的成员只有类自身可以访问。

class Uncopyable{
protected:
    Uncopyable();
    ~Uncopyable();
private:
    Uncopyable(const Uncopyable&);               //将拷贝函数转移至此
    Uncopyable& operator=(const Uncopyable&);
};

class House:public Uncopyable{...};              //公有继承

条款07:为多态基类声明virtual析构函数

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433452.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号