也就是说Triangle调用自己的复制构造函数时如何调用自己数据(该数据为对象)的构造函数
测试样例中有point copyconstructor run的输出
但我的没有
这个该如何修改
或者说在89-93行代码如何修改
#include <iostream>
using namespace std;
class Point
{
private:
double x;
double y;
public:
Point(double xv = 0, double yv = 0); /*构造函数*/
Point(const Point &p); /*拷贝构造*/
~Point(); /*析构函数*/
void setX(double xv); /*设置X坐标*/
void setY(double yv); /*设置Y坐标*/
double getX() const; /*获取X坐标*/
double getY() const; /*获取Y坐标*/
};
Point::Point(const double xv, const double yv)
{ /*构造函数*/
x = xv;
y = yv;
cout << "Point Constructor run" << endl;
}
Point::Point(const Point &p)
{ /*拷贝构造*/
x = p.x;
y = p.y;
cout << "Point CopyConstructor run" << endl;
}
Point::~Point()
{ /*析构函数*/
cout << "Point Destructor run" << endl;
}
void Point::setX(double xv)
{ /*设置X坐标*/
x = xv;
}
void Point::setY(double yv)
{ /*设置Y坐标*/
y = yv;
}
double Point::getX() const
{ /*获取X坐标*/
return x;
}
double Point::getY() const
{
return y;
}
class Triangle
{
private:
Point A;
Point B;
Point C;
public:
Triangle();
Triangle(const Point &a, const Point &b, const Point &c);
Triangle(const Triangle &);
~Triangle();
void setA(const Point &);
Point getA() const;
void setB(const Point &);
Point getB() const;
void setC(const Point &);
Point getC() const;
void show() const;
};
Triangle::Triangle(const Point &a, const Point &b, const Point &c)
{
A = a;
B = b;
C = c;
cout << "Triangle Constructor run" << endl;
}
Triangle::Triangle()
{
A.Point::setX(0);
A.Point::setY(0);
B.Point::setX(0);
B.Point::setY(0);
C.Point::setX(0);
C.Point::setY(0);
cout << "Triangle Constructor run" << endl;
}
Triangle::Triangle(const Triangle &t)
{
A = t.A;
B = t.B;
C = t.C;
cout << "Triangle CopyConstructor run" << endl;
}
Triangle::~Triangle()
{
cout << "Triangle Destructor run" << endl;
}
void Triangle::setA(const Point &a)
{
A = a;
}
Point Triangle::getA() const
{
return A;
}
void Triangle::setB(const Point &b)
{
B = b;
}
Point Triangle::getB() const
{
return B;
}
void Triangle::setC(const Point &c)
{
C = c;
}
Point Triangle::getC() const
{
return C;
}
int main(void)
{
Triangle t1, t2(t1);
return 0;
}