Point(int x=0,int y=0):x(x),y(y){}和Point(int x=0,int y=0){x=x;y=y}的差别

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/07 18:12:50

Point(int x=0,int y=0):x(x),y(y){}和Point(int x=0,int y=0){x=x;y=y}的差别
Point(int x=0,int y=0):x(x),y(y){}和Point(int x=0,int y=0){x=x;y=y}的差别

Point(int x=0,int y=0):x(x),y(y){}和Point(int x=0,int y=0){x=x;y=y}的差别
区别倒没多少,但是有些成员变量必须使用初始化列表进行初始化.
必须使用初始化列表的情形:
因为不能直接在类定义中直接初始化变量,而const类型的变量和引用类型的变量又必须在声明时进行初始化,const类型的变量只能初始化不能进行赋值,比如hyong类中定义了const int a变量,而在hyong::hyong(){a=1;}这时就会发生错误,const变量不能赋值,只能初始化.这时就发生了毛盾,解决的方法就是使用初始化列表,即const类型的变量和引用类型的变量必须在初始化列表中初始化,比如初始化hyong类中的const变量a时就应这样写hyong::hyong():a(1){}就是正确的表达式.
在类中声明了const类型的变量,所有的构造函数都必须使用初始化列表的形式以便初始化const类型的变量.记住是所有的构造函数,也就是你每定义一个构造函数都必须初始化const变量.
Point(int x=0,int y=0){this->x=x;this->y=y;}; //应加上this指针