[C++] const与重载
2015-07-13 20:19
260 查看
下面的两个函数构成重载吗?
?
下面的呢?
?
const在函数中的含义是该值在此函数范围内“无法修改”。站在调用者的角度,所有的值传递都是无法修改实参的。所以,(1)/(2)两个函数在调用者看来,是语义相同的,不能构成重载。
(4)与(3)的区别是,(4)无法修改引用指向的对象,而(3)可以。从调用者的角度,两个函数有不同的语义,构成重载。
demo
?
?
(4)与(3)的区别是,(4)无法修改引用指向的对象,而(3)可以。从调用者的角度,两个函数有不同的语义,构成重载。
demo
#include <iostream> using namespace std; class Y{}; /* 下面两个函数具有相同语义,即a均是值拷贝,无法改变实参。 */ void Method1(int a){} void Method1(const int a){} // error:redefinition /* 同样的语义,对象拷贝 */ void Method2(Y y){} void Method2(const Y y){} // error:redefinition /* 下面两个函数具有不同语义,即后者无法改变实参,之所以使用引用,可能是因为不想拷贝,节省内存。 */ void Method3(int& a){} void Method3(const int& a){} void Method4(Y& y){} void Method4(const Y& y){} int main(int count,char * args[]) { return 0; }
相关文章推荐
- C++中const重载
- vs2010下C++调用lib或dll文件
- C语言基础之--------内存地址分配
- C语言基础———指针,结构体指针,函数指针
- ZOJ2714迭代更新
- C语言基础---------函数,结构体
- C语言基础-----二维数组,三维数组
- 【C++/STL】list的实现(采用空间配置器和迭代器)
- C语言基础之数组
- C语言基础---BOOL 类型,运算符,if 语句,switch语句
- C++中将构造函数或析构函数定义为private
- [Section 1.1] Greedy Gift Givers
- C++中浅拷贝和深拷贝问题
- [leetcode-27]Remove Element(C语言)
- C语言中关键字auto、static、register、const、volatile、extern的作用
- c++ primer读书笔记-第十四章 重载操作符与转换
- C与C++中定义结构体的不同方式
- 学习C语言结构体
- 两个类相互调用的问题
- C语言基础问题1 数据在内存上的表现形式