构造函数和初始化的问题
- C/C++ code
#include<iostream>#include<String>using namespace std;class date{public: date(){cout<<"date()"<<endl;} date(string s){time=s;cout<<"date-time="+time<<endl;}protected: string time;};class calendar{public: calendar(){cout<<"calendar()"<<endl;}protected: date datea; date da("ss");//这一行问什么报错?};void main(){ calendar ca1; string s("ss"); date da("ss");//这一样卫矛不报错? cout<<s<<endl;}[解决办法]
date da("ss");//这一行问什么报错?
不能写在class声明的地方,只能写在函数体里面。
[解决办法]
class calendar{
...
protected:
date datea;
date da("ss");//这一行问什么报错?
};
这是calendar的类定义,不能在类定义里面直接初始化 数据成员。
可以在构造函数里面初始化,或者暴露一个public方法给用户设置。
[解决办法]
declare define implement
[解决办法]
protected:
date datea;
date da("ss");//这一行问什么报错?
// 不可以在这里初始化,类成员的初始化有几个地方,普通成员的初始化要在类的初始化列表里进行。
};
[解决办法]
类定义中的成员变量不能用带参构造函数构造对象。