关于C++中的常量引用和常量成员函数
来源:互联网 发布:linux sed 编辑:程序博客网 时间:2024/05/16 01:05
今天在利用NDKr13b将VS2013工程移植到Android平台过程中遇到了关于两个关于如题的小问题,在此做一记录。
1.问题描述:定义了一个结构体structA(在结构体中定义了构造函数,形如structA(int m){})和一个以此结构体作为入参的函数fun(structA & m_A),在VS工程中多次存在形如
fun(structA(0))的调用,在NDK编译时编译器报错:非常量引用无法绑定临时变量。
简化如下:int a = 1;
int &b = a;//OK
int &b = 1;//not OK
const int &b = 1;//OK
解决方法:将fun的入参改为fun(const structA & m_A)。
2.问题描述:定义了一个结构体structB(在结构体中定义了一个成员函数funA())和一个以此结构体作为入参的函数funB(const structB & m_B),在funB中存在m_B.funA()的调用,在NDK编译时出错:m_B的this指针为const,而funA()是非const函数,不可用。
基本原理:常量结构体无法调用非常量成员函数(不然就有可能通过非常量成员函数修改结构体,不符合const的机制)。
解决方法:将funA()声明改为funA const (),即将其改为常量成员函数。
小结:这两个问题可以归结为const限定符问题,由于VS编译器并没有对其进行报警(原理还未深究),因此直到用clang(NDKr13e默认的编译器)编译时才报错。在以后使用中需加以警惕。
- 关于C++中的常量引用和常量成员函数
- 常量对象、常量成员函数和常引用
- 关于C++中的常量成员函数
- 常量函数、常量引用参数、常量引用返回值[C++]
- 常量函数、常量引用参数、常量引用返回值[C++]
- 关于静态成员函数和常量成员函数
- C++const对象 常量数据 常量成员函数 const指针 const引用
- [C++学习笔记]--常量对象、常量成员函数和常引用
- 北大 C++ 3.8 常量对象、常量成员函数和常引用
- C++ 常量对象,成员函数,引用
- 类中的常量, const对象和成员函数
- 关于常量成员函数(const member function)
- 引用和常量引用
- 常量成员函数
- 常量成员函数
- const常量成员函数
- 常量成员函数
- 成员函数常量
- PAT——A+B和C
- Font Awesome(十六)
- Codeforces Round #453 (Div. 2)
- 30岁的感悟
- 拍照扫描车牌号识别的一种技术sdk
- 关于C++中的常量引用和常量成员函数
- poj 1287 kruskal 并查集
- java编程简易计算器
- Hogan模板引擎的使用
- PHP查询数据库数据(单条查询)
- 12-19笔记
- python3 阿里云短信发送Demo
- java编程,通过终端实现一个用户密码验证
- 一文快速掌握 Git 用法(Git介绍及使用流程)