回复 3楼 yang158
既然运行过了,那为什么还问:
问题一:以上程序编译能通过吗,试解释该程序?
问题二:以上程序的运行结构是否正确?
你只需要问“应该如何改正?”即可。
x = x;
y = y;
你不觉得这代码很奇怪?改为
this->x = x;
this->y = y;
试试吧。
另外,整个代码看起来非常外行,一看就知道属于“附魔外道”:
a. 没有构造函数,那 x,y 怎么初始化?也就是定义后,Set之前,其实属于不可使用的状态。
b. Print函数?为什么不一致性的使用C++流?
c. Print函数好歹也加个 const 呀,否则 const CPoint 对象怎么调用 Print ?
程序代码:
#include <iostream>
class CPoint
{
public:
CPoint();
CPoint( int x, int y );
private:
int x_, y_;
friend std::ostream& operator<<( std::ostream& os, const CPoint& pt );
};
CPoint::CPoint() : x_(0), y_(0)
{
}
CPoint::CPoint( int x, int y ) : x_(x), y_(y)
{
}
std::ostream& operator<<( std::ostream& os, const CPoint& pt )
{
return os << '(' << pt.x_ << ',' << pt.y_ << ')';
}
using namespace std;
int main( void )
{
CPoint pt( 10, 20 );
cout << pt << endl;
pt = CPoint( 30, 40 );
cout << pt << endl;
return 0;
}
因为你使用的是
远古时期的VC6,所以我没加“noexcept”修饰,它不认识。
如果你使用现代人所使用的C++编译器,记得加上noexcept。