1.概要
关于成员类,的:类、引用、指针初始化的要求
基本原则:除了指针,其他了类成员必须在构造函数前初始化,最迟是在初始化列表。无参构造函数的类成员,应该是系统默认创建的,可以理想为在构造函数列表中隐形调用的初始化(但一定不是在声明的时候初始化的,我起初也是那么理解的,如果那样的话,有参的构造函数应该也是可以在声明是初始化的,有参的不行,所以无参的也不行,无参虽然没有在初始化列表中体现,并不代码在声明的时候初始化了,声明就是声明,没有初始化。)。
2.实验代码
#include <iostream>
using namespace std;
class A {
public:
void fun() {
cout << "fun\n";
}
};
class C {
public:
int m_a;
C(int a) {
m_a = a;
}
};
class B {
public:
B(A& yaa):c(1),ya(yaa){
//c(1) error 这种不行 类的成员对象应该是必须在构造函数前创建完
//这种情况也不行,必须在构造函数前将成员引用完成初始化
{
//A a;
//ya = a;
}
//那么就只有指针的初始化是相对灵活的了
pa = new A();
}
A a;
C c;
A& ya;//引用的类型如何
A* pa;
void fun() {
cout << "bfun\n";
a.fun();
}
};
int main()
{
cout << "c++构造函数实验!\n";
A a;
B b(a);
C c(1);
b.fun();
}
3.运行结果