c++类定义的一个有关问题
c++类定义的一个问题
下面的类定义:
我不明白:构造方法 Dog();itsAge(2){}是什么含义,看样子是将itsAge初始化为2,但内联方式的写法也不是这样子的呀,越写越不清楚了。书上没有详细的解释,哪位朋友给讲解一下?
------解决方案--------------------
应该是写错了,应该是冒号表示的初始化列表。你这书不靠谱啊
------解决方案--------------------
Dog():itsAge(2){}
等同于Dog(){itsAge = 2}
------解决方案--------------------
这样写,肯定会显示错误的哦,应该是“:”,这是参数的初始化列表,这样的初始化方式应该是最放心的,跟构造函数的赋值有很多大区别,有兴趣可以自己去找答案
------解决方案--------------------
Dog():itAges(2){}
这就是成员变量初始化参数列表。构造函数的功能本来就是为了完成初始化的工作,c++中,初始化有两种方式,第一种是在构造函数体内进行对成员变量的初始化,第二种就是用初始化参数列表, 即上面你所用的方式。
下面的类定义:
class Dog
{
public:
Dog();itsAge(2){}
~Dog(){}
priviate:
int itsAge;
};
我不明白:构造方法 Dog();itsAge(2){}是什么含义,看样子是将itsAge初始化为2,但内联方式的写法也不是这样子的呀,越写越不清楚了。书上没有详细的解释,哪位朋友给讲解一下?
------解决方案--------------------
应该是写错了,应该是冒号表示的初始化列表。你这书不靠谱啊
------解决方案--------------------
Dog():itsAge(2){}
等同于Dog(){itsAge = 2}
------解决方案--------------------
这样写,肯定会显示错误的哦,应该是“:”,这是参数的初始化列表,这样的初始化方式应该是最放心的,跟构造函数的赋值有很多大区别,有兴趣可以自己去找答案
------解决方案--------------------
Dog():itAges(2){}
这就是成员变量初始化参数列表。构造函数的功能本来就是为了完成初始化的工作,c++中,初始化有两种方式,第一种是在构造函数体内进行对成员变量的初始化,第二种就是用初始化参数列表, 即上面你所用的方式。