Point(int x=0,int y=0):x(x),y(y){}和Point(int x=0,int y=0){x=x;y=y}的差别
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/30 05:21:40
![Point(int x=0,int y=0):x(x),y(y){}和Point(int x=0,int y=0){x=x;y=y}的差别](/uploads/image/z/9315444-12-4.jpg?t=Point%28int+x%3D0%2Cint+y%3D0%29%3Ax%28x%29%2Cy%28y%29%7B%7D%E5%92%8CPoint%28int+x%3D0%2Cint+y%3D0%29%7Bx%3Dx%EF%BC%9By%3Dy%7D%E7%9A%84%E5%B7%AE%E5%88%AB)
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指针