主题:关于C++构造函数知识的一个小问题
class MyClass
{
public:
int mem1;
const int mem2;
const int &mem3;
MyClass mem4; //这一句有什么问题吗?编译的时候报错,为什么?
public:
/* MyClass()
{
mem2 = 2;
mem3 = mem1;
}*/ //mem2,mem3(引用成员也必须在成员初始化参数表中初始化)
//是常量必须在成员初始化参数表中初始化
/* MyClass(int c):mem2(c), mem3(3), mem4(1)
{};*/ //mem3是引用成员变量,必须在成员初始化参数表中初始化
MyClass(int c, int &r, int m):mem2(c), mem3(r), mem4(m)
{};//正确,mem4使用默认构造函数
MyClass(int c, int &r, int m1, int m2):mem1(0),mem2(c),mem3(r), mem4(m1,m2)
{}; //正确
};
#include<iostream.h>
void main()
{
int r = 1;
MyClass m1(0, r, 2);
cout << m1.mem1 << " " << m1.mem2 << " " << m1.mem3 << endl;
}
{
public:
int mem1;
const int mem2;
const int &mem3;
MyClass mem4; //这一句有什么问题吗?编译的时候报错,为什么?
public:
/* MyClass()
{
mem2 = 2;
mem3 = mem1;
}*/ //mem2,mem3(引用成员也必须在成员初始化参数表中初始化)
//是常量必须在成员初始化参数表中初始化
/* MyClass(int c):mem2(c), mem3(3), mem4(1)
{};*/ //mem3是引用成员变量,必须在成员初始化参数表中初始化
MyClass(int c, int &r, int m):mem2(c), mem3(r), mem4(m)
{};//正确,mem4使用默认构造函数
MyClass(int c, int &r, int m1, int m2):mem1(0),mem2(c),mem3(r), mem4(m1,m2)
{}; //正确
};
#include<iostream.h>
void main()
{
int r = 1;
MyClass m1(0, r, 2);
cout << m1.mem1 << " " << m1.mem2 << " " << m1.mem3 << endl;
}