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++>

  • 相关阅读:
    [导入]动态内存管理
    再看一个直播帖子,一个上午混没了
    这个帖子不错
    基于STM32 8通道ADC采样实现源代码(转) 以后设计参考使用
    天气基本恢复正常,可以玩了
    开始学习了
    安静的看了2天书
    慎度职场“35危机”
    书买了,估计这个星期就到了
    C语言循环的小艺术(转)
  • 原文地址:https://www.cnblogs.com/wucg/p/2054724.html
Copyright © 2011-2022 走看看