C++语法应用:返回指向局部变量的引用__使用new分配空间(不推荐)
前言
编程是极其注重实践的工作,学习的同时要伴随代码
引入
此前写过帖子C++基础语法:返回引用类型_c++返回引用类型-CSDN博客,里面提到了返回引用必须使用已存在数据,包括对象属性和形参里的引用.这种说法还不完全,在局部变量中可以使用new分配堆空间,返回堆空间数据的引用,这种写法只做一个语法探寻,实际不这样写
返回指向局部变量的引用
/*已测试*/
/*返回指向局部变量的引用*/
#include<iostream>
using namespace std;class Demo {int age;
public:Demo(int ag):age(ag){}int get_age() { return age; }
};Demo& ret(int age);int main() {Demo de = ret(18);cout << "对象年龄为:" << endl;cout << de.get_age() << endl;cout << "======================" << endl;cout << de.get_age() << endl;cout << "======================" << endl;cout << de.get_age() << endl;cout << "======================" << endl;}Demo& ret(int age) {Demo* de_pt = new Demo(age);Demo& de=*de_pt;return de;
}
测试结果:
对象年龄为:
18
======================
18
======================
18
======================
注意:
编译器报警告:返回临时变量或局部变量的地址
而且很尴尬的是,没办法释放内存而且找不到原因,所以不要这样用!!!