#include <iostream>
using namespace std;
class Circle{
private:
float radius;
float xCoord;
float yCoord;
public:
Circle():radius(0),xCoord(0),yCoord(0){};
Circle(float r, float x, float y): radius(r), xCoord(x),yCoord(y){};
void PrintCircle(){
cout << radius << ' ' << xCoord << ' ' << yCoord;
}
};
class Cylinder{
private:
Circle circle;
float height;
public:
Cylinder():height(0){};
Cylinder(float r, float x, float y, float h):circle(r,x,y),height(h){};
void PrintCylinder(){
circle.PrintCircle();
cout << ' ' << height << endl;
}
};
int main(){
Cylinder c1;
c1.PrintCylinder();
Cylinder c2(5,5,5,5);
c2.PrintCylinder();
return 0;
}
输出:
0 0 0 0
5 5 5 5
在Cylinder class
中,我声明了一个Circle
对象成员,它调用了Circle的默认构造函数。 Cylinder c1
验证了这一点。然后在Cylinder c2
中,我使用Circle对象上的另一个Circle构造函数。
我的问题 - Circle
中的c2
对象是否使用了两个构造函数?为什么这样做?或者这只是类中的对象声明如何工作?
编辑: 我不是在询问有关成员初始化列表的信息。
假设我想使用其默认构造函数在Circle
中创建一个main()
对象。
int main(){
Circle c;
}
现在查看Cylinder
类的数据成员。
class Cylinder{
private:
Circle circle; //Default constructor?
float height;
}
创建Cylinder
对象时,Circle circle
会自动调用其默认构造函数吗?如果确实如此,那就把我带到了“两个构造者”的观点。
对于Cylinder c2
,这意味着由于Circle
,其Circle()
对象会调用其构造函数Circle(float r, float x, float y)
,然后调用Cylinder(float r, float x, float y, float h):circle(r,x,y),height(h){}
。