请问一个C++有关问题,敢请高手指导
请教一个C++问题,敢请高手指导
#include <iostream>
using namespace std;
class 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;}
void fun1(Point p)
{cout < <p.getx() < <endl;}
Point fun2()
{ Point A(1,2);
return A;}
int main()
{ Point(4,5);
Point B(A);
cout < <B.getx() < <endl;
fun1(B);
B=fun2();
cout < <B.getx() < <endl;
}
这段程序有错吗?为何提示A为定义呢?
------解决方案--------------------
你哪个A是在子函数内部的临时变量,当函数执行完后, 临时变量就消亡了,你再使用他,当然就没有了
------解决方案--------------------
Point(4,5);
这写的是啥?
改成
Point A(4,5);
#include <iostream>
using namespace std;
class 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;}
void fun1(Point p)
{cout < <p.getx() < <endl;}
Point fun2()
{ Point A(1,2);
return A;}
int main()
{ Point(4,5);
Point B(A);
cout < <B.getx() < <endl;
fun1(B);
B=fun2();
cout < <B.getx() < <endl;
}
这段程序有错吗?为何提示A为定义呢?
------解决方案--------------------
你哪个A是在子函数内部的临时变量,当函数执行完后, 临时变量就消亡了,你再使用他,当然就没有了
------解决方案--------------------
Point(4,5);
这写的是啥?
改成
Point A(4,5);