zoukankan      html  css  js  c++  java
  • 弄清C++在幕后为你所写、所调用的函数

     

    条款45: 弄清C++在幕后为你所写、所调用的函数

    一个空类什么时候不是空类? ---- 当C++编译器通过它的时候。如果你没有声明下列函数,体贴的编译器会声明它自己的版本。这些函数是:一个拷贝构造函数,一个赋值运算符,一个析构函数,一对取址运算符。另外,如果你没有声明任何构造函数,它也将为你声明一个缺省构造函数。所有这些函数都是公有的。换句话说,如果你这么写:

    class Empty{};

    和你这么写是一样的:

    class Empty {
    public:
      Empty();                        // 缺省构造函数
      Empty(const Empty& rhs);        // 拷贝构造函数

      ~Empty();                       // 析构函数 ---- 是否
                                      // 为虚函数看下文说明
      Empty&
      operator=(const Empty& rhs);    // 赋值运算符

      Empty* operator&();             // 取址运算符
      const Empty* operator&() const;
    };

    现在,如果需要,这些函数就会被生成,但你会很容易就需要它们。下面的代码将使得每个函数被生成:

    const Empty e1;                     // 缺省构造函数
                                        // 析构函数

    Empty e2(e1);                       // 拷贝构造函数

    e2 = e1;                            //  赋值运算符

    Empty *pe2 = &e2;                   // 取址运算符
                                        // (非const)

    const Empty *pe1 = &e1;             //  取址运算符
                                        // (const)

    from:<effective c++>

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 数的统计
    Java实现 蓝桥杯VIP 算法训练 和为T
    Java实现 蓝桥杯VIP 算法训练 友好数
    Java实现 蓝桥杯VIP 算法训练 连续正整数的和
    Java实现 蓝桥杯VIP 算法训练 寂寞的数
    Java实现 蓝桥杯VIP 算法训练 学做菜
    Java实现 蓝桥杯VIP 算法训练 暗恋
    Java实现 蓝桥杯VIP 算法训练 暗恋
    测试鼠标是否在窗口内,以及测试鼠标是否在窗口停留
    RichEdit 各个版本介绍
  • 原文地址:https://www.cnblogs.com/wucg/p/2054724.html
Copyright © 2011-2022 走看看