#include <iostream> using namespace std; class A { publlic: A(int i){x=i;} ~A(){"exit\n"} int get(){return x;} private: int x; };
A fun(); int main() { A &r = fun(); cout<<r.get()<<endl; } A fun() { A a(23); return a; }
c++指针引用,c++函数返回类 [解决办法]
func() 函数的返回值是值传递的方式,a是一个局部变量,它的声明周期只存在到fun()函数结束,将a的值返回之后,这里会第一次调用析构函数释放局部变量。赋值语句执行完后 临时变量 所在空间已成为无效空间,再使用引用的 r 就是一个指向不特定内存的变量,作用相当于野指针了。 我刚试验了,在VC下这套代码是可以通过,但是在G++下,甚至编译时通不过的: A &r = fun(); error: invalid initialization of non-const reference of type 'A&' from a temporary of type 'A' 从一个临时变量给一个引用初始化是不被允许的