C++重载函数 const形参 引用指针 const_cast
来源:互联网 发布:阿里云盘免费吗 编辑:程序博客网 时间:2024/06/05 22:36
一般来说,对于重载函数来说,由于顶层const不影响传入函数的对象,所有两个函数只是顶层const的区别的话,两个函数是等价的,定义为重载函数是非法的。
但是,另一方面,对于指针和引用来说,可以通过区分形参指向的是常量还是非常量来实现函数重载。此时的const是底层的。
Example:
Record lookup(Account&); //函数作用于Account的引用
Record lookup(const Account&); //新函数,作用于常量引用
可是 const引用对虽然忽略了对象的常量特性,但是参数的返回有时候却不能忽略。
Example:
const string &shorterString(const string &s1, const string &s2)
{
qDebug() << "the const functiong is added" << endl;
return s1.size() <= s2.size() ? s1 : s2;
}
假如对象是非常量引用,可是结果却是常量应用,这个往往不是我们所意愿的,这是时候可以用const_cast改变底层const特性来实现
const string &shorterString(const string &s1, const string &s2){ qDebug() << "the const functiong is added" << endl; return s1.size() <= s2.size() ? s1 : s2;}string &shorterString(string &s1, string &s2){ qDebug() << "the ordinary functiong is added" <<endl; auto &r = shorterString(const_cast<const string&>(s1), const_cast<const string&>(s2)); return const_cast<string&>(r);}
0 0
- C++重载函数 const形参 引用指针 const_cast
- 经典问题解析(1)---const和引用、指针与引用、函数重载、C方式编译
- 11、C++const指针 引用
- C++:指针、引用和CONST
- C++const对象 常量数据 常量成员函数 const指针 const引用
- C++,常量,const,constant,引用,指针,形参,实参,函数,返回值
- 函数返回const指针与const引用。
- C++(常)引用,const,指针引用
- C/C++的区别(默认值、内联函数、函数重载、const、引用、参数、返回值)
- c++-引用函数指针
- C++ 函数重载、指针及引用
- 引用,const引用,指针
- NDK-CPP语言-指针引用+函数指针+函数重载
- 【从C到C++学习笔记】引用/const引用/引用传递/引用作为函数返回值/引用和指针的区别
- 【C/C++学院】0820-Nullptr/const对象/类指针引用以及mallocfree与newde/类重载运算符/QT加法重载/类的重载赋值运算/自增在前在后差别/赋值重载深浅拷贝/重载下标
- 顶层const、底层const、函数重载与const形参
- C++基础学习笔记----第六课(const和引用的扩展、重载函数和C方式编译的深入)
- 细嚼慢咽C++primer(3)——引用形参,内联函数,重载函数,指向函数的指针
- 回车(CR)与换行(LF), '\r'和'\n'的区别
- Machine Learning Algorithms
- Spring中你不知道的注入方式
- 百度定位
- Android使用webview时,webview中的轮播图显示不正常
- C++重载函数 const形参 引用指针 const_cast
- 修改虚机管理员密码-LINUX篇
- HttpURLConnection入门
- PAT-B 1029. 旧键盘
- 关于调用Android系统分享
- RSA算法原理(二)
- Linux下运行java文件出现 -Xlint:unchecked
- js
- 原型模式