const int & 和 int 的区别
2015-07-07 10:59
519 查看
最近看函数的返回值时总是出现这两种函数的返回值。
const int& get() {return x;}
int get() {return x;}
下面就关于这两种函数的返回值做一个小的笔记。
const int & 是返回这个数值的一个常量的引用。
而int 是返回这个数值的一个拷贝。
1. int 是进行拷贝构造,而const int & 是返回的引用
2. 拷贝构造更消耗时间,与此同时还用析构函数。
3. 因为产生了一个拷贝,你就可以轻易地修改拷贝的内容
// const objects
#include <iostream>
using namespace std;
class MyClass {
int x;
public:
MyClass(int val) : x(val) {}
//const int& get() {return x;}
int & get(){return x;}
};
void print (MyClass& arg) {
int & temp = arg.get();
cout << temp << '\n';
cout << ++temp << endl;
cout << arg.get() << endl;
}
int main() {
MyClass foo (10);
print(foo);
return 0;
}
// 10 11 11
const int& get() {return x;}
int get() {return x;}
下面就关于这两种函数的返回值做一个小的笔记。
const int & 是返回这个数值的一个常量的引用。
而int 是返回这个数值的一个拷贝。
1. int 是进行拷贝构造,而const int & 是返回的引用
2. 拷贝构造更消耗时间,与此同时还用析构函数。
3. 因为产生了一个拷贝,你就可以轻易地修改拷贝的内容
// const objects
#include <iostream>
using namespace std;
class MyClass {
int x;
public:
MyClass(int val) : x(val) {}
//const int& get() {return x;}
int & get(){return x;}
};
void print (MyClass& arg) {
int & temp = arg.get();
cout << temp << '\n';
cout << ++temp << endl;
cout << arg.get() << endl;
}
int main() {
MyClass foo (10);
print(foo);
return 0;
}
// 10 11 11
相关文章推荐
- Python动态类型的学习---引用的理解
- Shell脚本中引用、调用另一个脚本文件的2种方法
- vbs引用另一个vbs的代码
- C++中引用的使用总结
- C++中引用(&)的用法与应用实例分析
- 关于"引用"的几点说明介绍
- C++中const的用法详细总结
- 浅析PHP原理之变量分离/引用(Variables Separation)
- 引用全局程序集缓存内的程序集的方法
- asp.net中javascript的引用(直接引入和间接引入)
- 浅析C和C++函数的相互引用
- c++中const的使用详解
- C/C++中指针和引用之相关问题深入研究
- C语言基础知识点解析(extern,static,typedef,const)
- c++ 尽量不要使用#define 而是用const、enum、inline替换。
- 由php的call_user_func传reference引发的思考
- C++标准之(ravalue reference) 右值引用介绍
- c++ 指针与引用的区别介绍及使用说明
- php面向对象全攻略 (十) final static const关键字的使用
- perl中子程序中参数的两种引用(传递)方式介绍