c++中函数中将引用用于类对象
来源:互联网 发布:javascript数组方法 编辑:程序博客网 时间:2024/06/16 20:17
在c++的引用学习中,遇到一些问题,比如返回成员函数内部变量的引用,这个变量会在函数声明周期结束的时候就被析构,然后返回了这个变量的引用就会出现一个错误的内存的引用,具体例子入下:
// TheRefOfc++.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <string>using namespace std;string version1( string& s1, const string& s2); //return 拷贝const string& version2(string& s1, const string& s2); //返回引用const string& version3(string& s1, const string s2); //bad 设计int _tmain(int argc, _TCHAR* argv[]){string input;string copy;string result;cout << "Enter a string: ";getline(cin, input);copy = input;cout << "Your String as entered :" << input << endl;result = version1(input, "***");cout << "Your String enhanced: " << result << endl;cout << "Your Original string: " << input << endl;result = version2(input, "###");cout << "Your string enhanced: " << result << endl;cout << "Your original string: " << input << endl;cout << "Resetting original string: " << endl;input = copy;result = version3(input, "@@@");cout << "Your string enhanced: " << result << endl;cout << "Your original string: " << input << endl;getchar();getchar();return 0;}string version1(string& s1, const string& s2){string temp;temp = s2 + s1 + s2;return temp;}const string& version2(string& s1, const string& s2){s1 = s2 + s1 + s2;return s1;}const string& version3(string& s1, const string s2){string temp;temp = s2 + s1 + s2;return temp;}
上面的例子中,当程序执行到最后的rsult赋值的时候,会把一个空的引用赋值给result,在这里就会出现空的指针的引用,会报一个bad_ptr的错误,在日常写程序的过程中,应该避免出现这样的空指针的引用,千万要注意不要返回局部变量的引用,因为他的生命周期只到函数结束。
0 0
- c++中函数中将引用用于类对象
- c++,父类引用指向子类对象,虚函数
- c++,父类引用指向子类对象,虚函数
- C++Builder 中 Mapx 的对象引用
- Unity中将类对象保存到XML中
- object-c中将字符串nsstring转换成对应刻调用的函数对象
- php中引用&的真正理解-变量引用、函数引用、对象引用
- php中引用&的真正理解-变量引用、函数引用、对象引用
- php中引用&的真正理解-变量引用、函数引用、对象引用
- php中引用&的真正理解-变量引用、函数引用、对象引用
- php中引用&的真正理解-变量引用、函数引用、对象引用(转)
- php中引用&的真正理解-变量引用、函数引用、对象引用
- php中引用&的真正理解-变量引用、函数引用、对象引用
- php中引用&的真正理解-变量引用、函数引用、对象引用
- php中引用&的真正理解-变量引用、函数引用、对象引用
- php中引用&的真正理解-变量引用、函数引用、对象引用
- php中引用&的真正理解-变量引用、函数引用、对象引用
- php中引用&的真正理解-变量引用、函数引用、对象引用 三
- 小孩培养记事
- 黑马程序员——Java基础---赋值运算符
- 黑马程序员——Java基础——集合(一)
- 多线程编程3 - NSOperationQueue
- Linux & ROS 常用命令整理
- c++中函数中将引用用于类对象
- 多线程编程4 - GCD
- L1 Cache(一级缓存)
- Git使用教程(二)——Git的分支与合并
- 一步一步学JBPM(12)——JBPM流程历史追踪
- java中的HashTable,HashMap和HashSet
- iOS开发UI篇—UIWindow简单介绍(转载)
- Leecode 记录——Remove Nth Node From End of List
- 单词反转