首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-09-12 
构造函数和初始化的问题C/C++ code#includeiostream#includeStringusing namespace stdclass date{pu

构造函数和初始化的问题

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

热点排行