为什么同一段代码在vs和code上运行的结果不一样哪,为什么code上的析构函数没有运行

/* 演示调用构造函数`复制构造函数以及析构函数*/#include <iostream>using namespace std;class Point{private: int X,Y;public: Point(int a=0,int b=0) // 构造函数 { X=a; Y=b; cout << "Initializing" << endl; } Point(const Point &p); //声明复制构造函数 int GetX() { return X; } int GetY() { return Y; } void Show() { cout << " X = " << X << ", Y = " << Y << endl; } ~Point() //析构函数的声明与定义 { cout << "delete..." << X << "," << Y << endl; }};Point::Point(const Point &p) //定义复制构造函数{ X = p.X; Y = p.Y; cout << "Copy Initializing" << endl;}void display(Point p) //Point类的对象作为函数的形参{ p.Show();}void disp(Point &p) //Point类对象的引用作为函数的形参{ p.Show();}Point fun () //函数的返回值为Point的对象{ Point A(101,202); return A;}int main(){ Point A(42,35); //对象A Point B(A); //第一次调用复制构造函数,用A初始化B Point C(58,94); //对象C cout << "called display(B)" << endl; display(B); //第二次调用复制构造函数,对象B作为display的实参 cout << "Next..." << endl; cout << "called disp(B)" << endl; disp(B); cout << "call C = fun ()" << endl; C = fun(); //第三次调用复制构造函数,fun的返回值赋给对象C cout << "called disp(C)" << endl; disp(C); cout << "out..." << endl; return 0;}

这个可能是因为6.0和2010所使用的函数库可能不同,链接的系统库不同
你可以采用下面的方法再试一下:
1、创建项目的时候选择一个空白的控制台项目,就是创建完以后一个文件都没有的那种。
然后添加一个c++源文件,将代码写进去
2、编译的时候记得用release模式
3、记得运行的时候关闭电脑的其他程序,尽量让cpu的使用率保持一致
这样再试一下看看

额外说明一下,2010的功能比6.0强大很多,所以同样一段代码的编译,它会比6.0添加更多的辅助性的东西进去。但正常的话,release版本在运行速度上应该是没有变化的!

如果按照上面的还有这样大的区别,请和我联系
我也很感兴趣!追问

问下C=fun()这条代码会调用犁制构造函数

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网