总之问题是这样的[mw_shl_code=applescript,true]#include *本站禁止HTML标签噢*
using namespace std;
class point{
private:
int x, y;
public:
point(int a = 0, int b = 0){
x = a;
y = b;
}
point(point &p);
int getx(){
return x;
}
int gety(){
return y;
}
};
point::point(point &p){
x = p.x + 10;[mw_shl_code=applescript,true]point::point(point &p){
x = p.x + 10;
y = p.y + 20;
cout << "调用拷贝构造函数" << endl;
}
y = p.y + 20;
cout << "调用拷贝构造函数" << endl;
}
void f(point &p){
cout << p.getx() << " " << p.gety() << endl;
}
point g(){
point q(3, 5);
return q;
}
int main()
{
point p1(2, 4);
point p2(p1);
cout << p2.getx() << " " << p2.gety() << endl;
f(p2);
p2 = g();
cout << p2.getx() << " " << p2.gety() << endl;
system("pause");
return 0;
}
[/mw_shl_code]
用cb编译运行的得到的结果是这样的
而用vs2013编译得到的结果是这样的
虽然乱码也是问题。。。
但主要是为什么使用vs2013时在执行[mw_shl_code=applescript,true]p2 = g();[/mw_shl_code]时调用了
[mw_shl_code=applescript,true]point::point(point &p){
x = p.x + 10;
y = p.y + 20;
cout << "调用拷贝构造函数" << endl;
}[/mw_shl_code]
而cb没有这一步?