zoukankan      html  css  js  c++  java
  • 构造函数的初始化表

    1. 如果类存在继承关系,那么派生类中必须在初始化列表中调用基类的构造函数;

    class A
    {…
        A(int x);        // A的构造函数
    };    
    class B : public A
    {…
        B(int x, int y);    // B的构造函数
    };
    
    B::B(int x, int y): A(x)   // 在初始化表里调用A的构造函数
    {
          …
    }    

    2. const数据成员必须在初始化列表中进行初始化。因为const常量是属于对象的常量,而不是整个类的常量,对于每个对象,常量的值是不同的,在初始化列表中进行初始化。

    3. 类的数据成员初始化,分为对象成员,和一般数据成员。可以在初始化列表中进行,也可以在构造函数内部进行。对于对象成员,采用初始化列表会更方便,因为初始化列表中初始化对象成员,直接调用的是拷贝构造函数。如果在函数体内初始化对象成员,是需要先调用对象成员类的构造函数,再调用赋值运算符函数进行赋值。

    class A
    {…
        A(void);                // 无参数构造函数
        A(const A &other);        // 拷贝构造函数
        A & operate =( const A &other);    // 赋值函数
    };
    
    class B
    {
    public:
        B(const A &a);    // B的构造函数
    private:    
        A  m_a;            // 成员对象
    };
    
    B构造函数方法一:
    B::B(const A &a): m_a(a)    //调用的是拷贝构造函数初始化m_a        
    { 
       … 
    }    
    方法二:
    B::B(const A &a)
    {
    m_a = a;//先调用A的构造函数,创建对象m_a,再调用A的赋值函数进行赋值
    …
    }
  • 相关阅读:
    服务器运维
    mysq配置
    PHP-FPM进程数的设定
    vsftpd 安装配置详细教程
    php-fpm性能优化
    如果不知道MySQL当前使用配置文件(my.cnf)的路径的解决方法
    搭建linux+nginx+mysql+php环境
    PHP 页面编码声明方法详解(header或meta)
    Linux内核的一些知识。
    Connector框架笔记
  • 原文地址:https://www.cnblogs.com/beaglebone/p/5729563.html
Copyright © 2011-2022 走看看