c++对象成员问题:为什么在Line.h中实例化不需要传入参数
想问下,在Line.h中,
Coordinate m_coorA;
Coordinate m_coorB;
这两行代码是类的成员变量,同时也是将Coordinate类中的两个对象实例化了对吧。那么Coordinate的构造函数如图一写成了
Coordinate::Coordinate(int x,int y)
{
m_iX=x;
m_iY=y;
cout |
免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。
版权声明:作者保留权利,不代表天盟立场。
|
|
|
|
你的问题“这两行代码是类的成员变量,同时也是将Coordinate类中的两个对象实例化了对吧”
不一定。
第二张图是Line的类声明,其中你画圈的代码是对其成员变量的描述。
像这样的非static 成员变量的实例化代码,要么出现在Line构造函数的成员初始化列表中,如:
//构造函数参数列表后面冒号后的部分就是“成员初始化列表”//成员变量的初始化推荐放在这里Line(intx1,inty1,intx2,inty2):m_coorA(x1,y1),m_coorB(x2,y2){...}要么,在C++11标准之后,也可以在类中(你画圈的地方)提供初值,必须用等于号或者大括号的初始化形式,如:
classLine{...private:Coordinatem_coorA{...};//C++11之后,你可以在这里用大括号形式调用构造函数...};在类实例化时,成员变量可通过以上两种方式进行实例化。如果都没有提供,成员变量会被默认构造。
鉴于你说没有编译失败,虽然你没有提供构造函数的实现代码,推测是使用了成员初始化列表的方式进行了成员的初始化。 |
|
|
|
|