读书人

麻烦看上这种写法没见过

发布时间: 2012-12-31 11:57:52 作者: rapoo

麻烦看下这种写法,没见过
class Test2
{
public:
Test2(int i = 0):val(i){}
void func()
{
cout<<val<<endl;
}
private:
int val;
};


其中 Test2(int i = 0):val(i){} 该怎么理解,那个冒号是什么作用,这一行是函数吗?
[解决办法]
Test2(int i = 0):val(i)
{

}
是一个构造函数
[解决办法]
就是把i赋值给数据成员val,
因为这是一个函数,所以跨号是必须加的
[解决办法]

引用:
赋值操作为什么不放到{}里,非要用这种古怪的形式?

冒号后面是初始化列表
放到{}就变赋值了。
对于c++内置类型,放在初始化列表中和放在{}中没有什么区别。
对于自定义类型,放在初始化列表中效率更高(减少一次赋值)

楼主可以找找"初始化列表"的资料

读书人网 >C++

热点推荐