类成员初始化总结

类成员初始化总结
 
 
//目的:本程序测试常量成员变量、引用成员变量、类成员变量在类构造函数中初始化的问题
//测试结果:常量成员变量必须在类构造函数(无参数可用常量,带参数可用参数)时使用成员初始化方法初始化
//            引用成员变量必须在类构造函数(必须带参数)时使用成员初始化方法初始化,引用实际上只是一个变量的别名
//            类成员变量有两种情况:1.类成员变量有默认(即自己没写任何构造函数)构造函数(或自己写了一个无参数构造函数),类的构造函数可以不对类成员变量初始化(其实编译器自动对类成员变量调用默认或无参的成员变量构造函数初始化了)
//                                  2.类成员变量只有带参数的构造函数(同时自己没写无参数构造函数),类的构造函数必须对类成员变量初始化,编译器不会自动调用默认构造函数对成员变量初始化
//                                  3.类成员变量有自己写的无参数构造函数和其他带参数构造函数时,类的构造函数没有对类成员变量初始化时调用类成员变量的无参数构造函数对其初始化,类的 构造函数对类成员变量初始化时调用类成员变量的带参数构造函数对其初始化

//目的:本程序测试常量成员变量、引用成员变量、类成员变量在类构造函数中初始化的问题
//测试结果:常量成员变量必须在类构造函数(无参数可用常量,带参数可用参数)时使用成员初始化方法初始化
//            引用成员变量必须在类构造函数(必须带参数)时使用成员初始化方法初始化,引用实际上只是一个变量的别名
//            类成员变量有两种情况:1.类成员变量有默认(即自己没写任何构造函数)构造函数(或自己写了一个无参数构造函数),类的构造函数可以不对类成员变量初始化(其实编译器自动对类成员变量调用默认或无参的成员变量构造函数初始化了)
//                                  2.类成员变量只有带参数的构造函数(同时自己没写无参数构造函数),类的构造函数必须对类成员变量初始化,编译器不会自动调用默认构造函数对成员变量初始化
//                                  3.类成员变量有自己写的无参数构造函数和其他带参数构造函数时,类的构造函数没有对类成员变量初始化时调用类成员变量的无参数构造函数对其初始化,类的 构造函数对类成员变量初始化时调用类成员变量的带参数构造函数对其初始化
#include <iostream>
#include <cstdlib>
#include <new>//内存分配
#include <ctime>//时间相关头文件
using namespace std;

int getrand()//产生一个随机值
{
    srand((unsigned)time(NULL));
    return rand();
}
class base{
    //const int m_nx;
    int &m_nx;
public:
    //base():m_nx(0) {cout << "class base construction(no para)" << endl;}
    base(int n):m_nx(n)//初始化
    {
        //m_nx = n;
        cout << "class base construction(have para)" << endl;
    }
    int getx() {return m_nx;}
    //void setx(int i){m_nx = i;}
};
class driver{
public:
    base m_basei;
    driver(int n):m_basei(n)
    {
        cout << "class driver construction" << endl;
    }
};
int main()
{
    driver obj(getrand());
    cout << "The obj.m_basei's value :" <<obj.m_basei.getx() << endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值