麻烦看下这种写法,没见过
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++内置类型,放在初始化列表中和放在{}中没有什么区别。
对于自定义类型,放在初始化列表中效率更高(减少一次赋值)
楼主可以找找"初始化列表"的资料