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

构造函数初始化有关问题

2013-03-12 
构造函数初始化问题?Class base{protected: int ipublic: base(int x)(ix}}class derived: public bas

构造函数初始化问题?

Class base
{
protected:
 int i;
public:
 base(int x)(i=x;}
};

class derived: public base
{
private:
 int i;
public:
 derived(int x,int y): base(x){}  //问题在这里

void printTotal(){
int total = i+base::i;

}


}


问题是:
在derived(int x,int y): base(x){}   这一行并没有对derived类的成员变量i初始化,在VS2010上竟然编译通过了,请问这是怎么回事。我知道正确的写法应该是:
derived(int x,int y): base(x){i=y;}
 

但是在derived(int x,int y): base(x){}   竟然也能编译通过,请问这是为什么?
[解决办法]
也没有语法错误,编译通过不正常吗?
[解决办法]

Class base
{
protected:
 int i;
public:
 base(int x) : i(x) (}
};

class derived: public base
{
private:
 int i;
public:
 derived(int x,int y): base(x), i(y) {}

void printTotal()
{
   int total = i+base::i;
}
}


初始化和赋值不一样!!
[解决办法]
语法上并没有任何问题,初始化是程序员的事情,不是编译器要做的。
[解决办法]
你选择了再构造函数内不对某个成员变量进行初始化,编译器不会阻止你这样做也没理由阻止

热点排行