对象为类的私有数据 如何调用私有数据的复制构造函数

也就是说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;
}
 

89-93行没问题啊,VS2010测试你的代码,93行有输出

img

你是不是建的工程不是控制台的程序呢?

vs2019测试,代码没有问题
你可以debug调试,在83加断点,单步调试,看控制台输出

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632