返回信息流//4_2.cpp
#include <iostream>
using namespace std;
class Point //Point 类的声明
{
public: //外部接口
Point(int xx=0, int yy=0) {X=xx;Y=yy;} //构造函数
Point(Point &p); //拷贝构造函数
int GetX() {return X;}
int GetY() {return Y;}
private: //私有数据
int X,Y;
};
//成员函数的实现
Point::Point(Point &p)
{
X=p.X;
Y=p.Y;
cout<<"拷贝构造函数被调用"<<endl;
}
//形参为Point类对象的函数
void fun1(Point p)
{ cout<<p.GetX()<<endl;
}
//返回值为Point类对象的函数
Point fun2()
{
Point A(1,2);
return A;
}
//主程序
int main()
{
Point A(4,5); //第一个对象A
Point B(A); //情况一,用A初始化B。第一次调用拷贝构造函数
cout<<B.GetX()<<endl;
fun1(B); //情况二,对象B作为fun1的实参。第二次调用拷贝构造函数
B = fun2(); //情况三,函数的返回值是类对象,函数返回时,调用拷贝构造函数
cout<<B.GetX()<<endl;
return 0;
}
错误出在倒数第3行——B = fun2();
no matching function for call to `Point::Point(Point)'
这是怎么回事?我也没看出来什么错啊?
多谢解答
这是一条镜像帖。来源:北邮人论坛 / cpp / #40612同步于 2010/6/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
课本上一例子,运行却错误
salooloo
2010/6/21镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
【 在 XiaoBiShou 的大作中提到: 】
: 复制 运行了一下 通过了 木有问题
: --
: 命 运 时 德 人
: ...................
同学 你用的什么编译器?