类的成员函数为什么可以这样写?

来源:百度知道 编辑:UC知道 时间:2024/06/11 08:46:02
class A:public B
{
public:
A:_a(0.){}
protected:
double _a;
}

其中构造函数中的语句为什么写在{}外面,这种用法怎么解释?

这叫初始化列表,用来初始化类的数据成员,用法见下面的例子
class A
{
public:
A():data(0),c('m'){}
private:
double data;
char c;
};

初始化列表是很有用的,像常数据成员只能用初始化列表来初始化,即:放在构造函数里面来初始化编译是通不过的。
慢慢掌握吧。。。

在java的语法里
class A extends public B
{
double _a = 0.; // 这样的语句效率很高的。
public A(){}
}

在C++中,在定义成员变量时,double _a = 0. 这样写是不允许的。而用题目中的方式来实现了同样的功能。

A:_a(0.){}
这个构造函数的意思是,在为该类的对象分配内存空间的时候,为他的成员double _a 设置初始值为0;
注:设初始值是在执行构造函数前完成的。