【C++内存管理】18_补充
谈谈 const
当成员函数的 const 和 no-const 版本同时存在, const object 只会(只能)调用 const 版本, non-const object 只会(只能)调用 non-const 版本
是否可被调用 | const object (data members 不得变动) |
non-const object (data members 可变动) |
---|---|---|
const member functions (保证不更改data members) |
√ | √ |
non-const member functions (不保证 data members 不变) |
× | √ |
const String str("hello word");
str.printf();
如果当初设计 String::printf() 时未指明 const, 那么以上代码将是经由 const object 调用 non-const member function, 编译时会报错(并非我们所愿)
class template std::basic_string<...> 有如下两个 member funcions
charT operator[](size_type pos) const
{ ... /* 不必考虑 COW */ }reference operation[](size_type pos)
{ ... /* 必须考虑 COW */ }
【【C++内存管理】18_补充】COW: Copy On Write (引用技术数据共享机制)
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘