qq_25448883 2022-04-02 10:45 采纳率: 50%
浏览 35
已结题

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

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

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2022-04-02 10:52
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月10日
  • 已采纳回答 4月2日
  • 创建了问题 4月2日

悬赏问题

  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探