12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- //引用做函数的返回值
- //注意 : 不要返回局部变量引用
- //用法 : 函数调用作为左值
- #if(0)
- #include <iostream>
- int& test01()
- {
- int a = 10; //局部变量存放在四区中的 栈区
- return a;
- }
- int& test02()
- {
- static int a = 10; //静态变量存放在全局区 , 全局区上的数据在程序结束后由系统释放
- return a;
- }
- int main()
- {
- //int& ref = test01();
- //std::cout << " ref = " << ref << std::endl; // 第一次结果正确 , 是因为编译器做了保留
- //std::cout << " ref = " << ref << std::endl; // 第二次结果错误 , 是因为a的内存已经被释放
- int& ref2 = test02();
- std::cout << " ref2 = " << ref2 << std::endl;
-
- test02() = 1000; //如果函数的返回值时引用,这个函数调用可以作为左值
- system("pause");
- return 0;
- }
- #endif
|