总之问题是这样的[mw_shl_code=applescript,true]#include<iostream> 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编译运行的得到的结果是这样的[attach]428336[/attach] 而用vs2013编译得到的结果是这样的[attach]428337[/attach] 虽然乱码也是问题。。。 但主要是为什么使用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没有这一步?