zoukankan      html  css  js  c++  java
  • 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; };
  • 相关阅读:
    第一次结对编程作业
    第7组 团队展示
    第一次个人编程作业
    js学习笔记(1)
    第一次博客作业
    期末总结
    王者光耀团队作业
    第四次c++作业
    c++第三次作业
    第一次编程作业
  • 原文地址:https://www.cnblogs.com/wangjzh/p/4064077.html
Copyright © 2011-2022 走看看