gpt4 book ai didi

c++ - 重载运算符和静态成员变量的行为

转载 作者:行者123 更新时间:2023-11-27 23:48:31 26 4
gpt4 key购买 nike

我正在运行以下代码,并期望输出窗口在程序结束时显示的点数应等于 3。点 p3 存在一些问题,我在其中创建了新点并在使用增量运算符后用 p2 进行了初始化。我不明白哪里出了问题。这里肯定遗漏了什么。请需要帮助!

感谢阅读。

#include <iostream>

using namespace std;

class Point {

private:
int x, y;
static int count;

public:
Point(): x(0), y(0) { count++; }
Point(int x1, int y1) {
x = x1; y = y1;
count++;
}

int getCount() const { return count; }

Point operator=(Point &p) {
x = p.x;
y = p.y;

return *this;
}

Point operator++() {
x++; y++;
return *this;
}

void print() { cout << "(" << x << ", " << y << ")" << endl; }
};

int Point::count = 0;

//================ Driver Program ============

int main() {

Point p1;
Point p2(1, 1);

p1.print();
p2.print();

Point p3 = ++p2;
p3.print();

cout << "Number of points: "<<p1.getCount() << endl;

system("pause");
return 0;
}

最佳答案

p3p2 的拷贝,但您没有递增计数器的复制构造函数。

你需要一个 Point(const Point&) 和一个 ++counter (除了复制 xy 成员)。

关于c++ - 重载运算符和静态成员变量的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48604178/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com