【c++程序】引用容易犯得错误
2014-10-18 20:34
225 查看
#include<iostream> using namespace std; class A { public: A(int i){cout<<"执行构造函数创建一个对象\n";x=i;} A(A&a){x=a.x;cout<<"执行复制构造函数创建一个对象\n";} ~A(){cout<<"执行析构函数!\n";} int get(){return x;} private: int x; }; A func()//去掉func前的&,输出23.变成了按值返回 { cout<<"跳转到func函数中!\n"; A a(23);//由于对象a是一个局部变量,因此当func函数结束以后,局部变量a也被删除了。 cout<<"对象a的地址:"<<&a<<endl; return a;//由于对象a消失了,所以func函数返回的其实是一个并不存在的对象的别名。 } int main() { A&r=func();//把并不存在的别名赋给r,因此这个对象的别名也不存在。 cout<<"对象a的副本的地址:"<<&r<<endl; cout<<r.get()<<endl;//用这个不存在的对象来调用该对象的函数get return 0; }
相关文章推荐
- C++程序调试错误……谢谢您的帮助
- C++编程人员容易犯的10个C#错误
- C++编程人员容易犯的10个C#错误
- C++ 菜鸟使用默认构造函数容易出现的错误
- 编译器错误消息: 类型“System.Data.Objects.DataClasses.EntityObject”在未被引用的程序集中定义。
- C++编程人员容易犯的10个C#错误
- 编译器错误消息: CS0012: 类型“System.Data.Linq.DataContext”在未被引用的程序集中定义。必须添加对程序集“System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的引用。
- C++编程人员容易犯的10个C#错误——C++培训(四)
- C++编程人员容易犯的10个C#错误——C++培训(一)
- linux下c++程序编译错误--理解typename
- webservice 运行时出现 无法生成临时类 类型 n 在未被引用的程序集中定义 错误
- C++编程人员容易犯的10个C#错误
- C++编程人员容易犯的10个C#错误
- C++编程人员容易犯的10个C#错误
- C++编程人员容易犯的10个C#错误
- C++编程人员容易犯的10个C#错误
- 对象引用机制中容易被忽略的编码错误
- C++程序员容易犯的十个C#错误
- 使用sqlite数据库时 “System.Data.Common.DbConnection”在未被引用的程序集中定义 错误原因
- 让C++变得更加容易:偶尔可以工作的程序(未定义行为)