读书人

构造函数和初始化的有关问题

发布时间: 2012-09-12 09:21:30 作者: rapoo

构造函数和初始化的问题

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");//这一行问什么报错?
// 不可以在这里初始化,类成员的初始化有几个地方,普通成员的初始化要在类的初始化列表里进行。
};
[解决办法]
类定义中的成员变量不能用带参构造函数构造对象。

读书人网 >C++

热点推荐