检查这段代码#include <iostream> using namespace std; class CmyPoint { private: int x,y; public: CmyPoint(){cout<<"调用默认构造函数"<<endl;} ; CmyPoint(int,int); CmyPoint(CmyPoint& p); ~CmyPoint(){cout<<"调用析构函数";}; int getx() { return x; }; int gety() { return y; }; }; CmyPoint::CmyPoint(int a,int b) { cout<<"调用默认构造函数"<<endl; x=a; y=b; } CmyPoint::CmyPoint(CmyPoint& p) { cout<<"调用用于拷贝初始化的构造函数"<<endl; x=p.x; y=p.y; int main(){ CmyPoint point1; CmyPoint point2(1,2); CmyPoint point3(point1); return 0;}
时间: 2023-12-02 22:02:36 浏览: 76
这段代码存在两个问题:
1. 在CmyPoint类的构造函数CmyPoint()后面的分号是多余的,应该删掉。
2. 在main函数中,CmyPoint point3(point1)的拷贝构造函数没有使用const关键字,应该改为CmyPoint(const CmyPoint& p)。这是因为拷贝构造函数通常不会修改原始对象,因此应该使用const来确保不会修改原始对象。
修改后的代码如下:
```
#include <iostream>
using namespace std;
class CmyPoint {
private:
int x,y;
public:
CmyPoint() {cout<<"调用默认构造函数"<<endl;}
CmyPoint(int,int);
CmyPoint(const CmyPoint& p);
~CmyPoint() {cout<<"调用析构函数"<<endl;}
int getx() { return x; }
int gety() { return y; }
};
CmyPoint::CmyPoint(int a,int b) {
cout<<"调用构造函数"<<endl;
x=a;
y=b;
}
CmyPoint::CmyPoint(const CmyPoint& p) {
cout<<"调用拷贝构造函数"<<endl;
x=p.x;
y=p.y;
}
int main() {
CmyPoint point1;
CmyPoint point2(1,2);
CmyPoint point3(point1);
return 0;
}
```
输出结果如下:
```
调用默认构造函数
调用构造函数
调用拷贝构造函数
调用析构函数
调用析构函数
调用析构函数
```
阅读全文