C++基本概念总结——const 和 非const
来源:互联网 发布:linux ping的使用 编辑:程序博客网 时间:2024/05/29 17:19
const成员函数
类的成员函数后边增加一个 const 关键字,表示该函数为 const 成员函数。考虑如下类A的定义,f1为 const 成员函数,f2为 非const 成员函数:
class A{public:A(int i) : m_id(i) {}void f1() const; // const 成员函数void f2(); // 非const 成员函数 private:int m_id;};
在 const 成员函数中不能修改类的成员变量,如下代码会导致编译失败:
void A::f1() const{m_id = 1; // 编译失败!不能修改类的成员变量}
此外,类的 const 对象,只能访问其 const 成员函数,如下代码中只有对 f2 的调用会导致编译失败:
const A a(1);a.f1(); // 编译成功a.f2(); // 编译失败,不能访问非 const 成员函数
const成员变量
非静态 const 成员变量需要通过初始化列表进行初始化。静态 const 成员变量通过显示的定义进行初始化。
class A{public:A(int i) : m_id(i){} // 非静态 const 成员变量通过初始化列表初始化private:const int m_id;static const int s_id;};const int A::s_id = 1; // 静态 const 变量通过显示的定义进行初始化
const指针
const指针定义时,根据 const 关键字和 * 的位置,可以分成两种情况。
char buf[4] = "abc";const char* p1 = buf;char const* p2 = buf;char* const p3 = buf;
例如上面的代码中,p1和p2表示的含义相同(const 关键字在 * 的左边),表示指针指向的内容是 const 的,但指针本身是 非const。p3 (const 关键字在 * 的右边)表示指针本身是const的,但其指向的内容是 非const。
char c = 'd';p1[0] = c; // 编译失败,其指向的内容是const的,不能修改p2[0] = c; // 编译失败p1 = &c; // 编译成功p2 = &c; // 编译成功p3[0] = c; // 编译成功p3 = &c; // 编译失败,指针本身是const的,不能修改
- C++基本概念总结——const 和 非const
- C++——Const总结
- C++基本概念——const与基本类型和类、const与指针、const与引用
- C++primer——const总结4--重载和 const 形参
- C++primer——const总结
- c中const和c++中const的学习总结
- c++——const
- c——const
- C++——const关键字和指针
- C和C++区别——const
- const 和 非const函数重载
- const引用和非const引用
- const函数 和非const函数
- const 和非 const 函数重载
- c++ const引用和非const引用
- const引用和非const引用
- const 引用 和 非 const 引用
- const 和 非const函数重载
- Android实现计时与倒计时(限时抢购)的几种方法
- NiosII 的timestamp的作用
- ScriptCase开发平台介绍(六)——连接数据库
- 网络请求状态代码含义解析
- Unexpected call to method or property access
- C++基本概念总结——const 和 非const
- select,epoll,poll比较
- axis2 webservice学习笔记二
- IOS开发问题记录(2012/11/19)
- Linux 入门笔记(三)
- CF 107D 【矩阵快速幂】
- Unix线程,互斥量,确保同一时间只有一个线程访问数据
- [Win32][C++]编码转换
- Storyboard