重温C++ primer 之const总结
来源:互联网 发布:网络推广是干什么的 编辑:程序博客网 时间:2024/05/28 06:05
1.const变量,即常变量(变量值保持不变,不能被修改)
a.const变量默认时是定义该变量的文件的局部变量
b.非const*指针无法指向const 变量,只有const *指针能指向const 变量。
c.一些const 变量定义在头文件中,const变量通过常量表达式自我初始化时.
2.
A.
a.const T *pstr;指向常对象的指针,简单理解成*pstr不变,即指向的对象不变。这种指针的作用是指向对象时,防止指针对指向的对象进行修改值,起保护对象的值的作用
b.T * const pstr;常指针,简单理解成pstr不变,即指针变量的值不变。这种指针的作用指向该对象后,则只能指向该对象,不能指向其他对象,可以对该对象的值进行修改。
c.const T * const pstr;指向常对象的常指针,简单理解成*pstr不变,pstr不变,即指向的对象不变且指针变量不变。这种指针的作用是指向该对象后,则只能指向在该对象,不能指向其他对象,不可以对该对象的值进行修改。
B.const 指针与非const指针
a.无法从“const T *”转换为“T *”,假如行的话,则会修改该指针指向的对象的值,则不合理,不成立,破坏了const的作用,编译器所以报错
无法从"const T * const"转换为"T *"
b.非const指针能转换为const指针
3.const 引用
const T &pstr;指向常对象的引用
问题:无法从"const T "转换为"T &";
非const引用只能绑定到与该引用同类型的对象
const引用则可以绑定到不同但相关的类型的对象或绑定右值
4.
A.const 成员函数
A Object;
内部调用过程:const A *this=&Object;
this->该成员函数;
该函数过程的作用是防止函数被调用后执行过程中某个语句修改了调用该函数的对象的值,其实就是保护调用该函数的对象的值
B.const成员函数与非const成员函数
a.const 成员函数不可以访问非const 成员函数原因是const *this 指针不能转换为 this指针
b.非const 成员函数可以const 成员函数原因是 this指针能转换为const *this 指针
5.const 对象,即常对象.
const 对象只能调用const 成员函数,不能调用非const 成员函数。原因就是const对象由const *this指针指向,而不能由非const *this指针指向。
非const对象既能调用非const成员函数,又能调用const 成员函数。非const对象能调用const成员函数的原因就是this指针转换为const *this指针。
6.const对象的动态分配和回收
与其他常量一样,动态创建的const对象必须在创建时初始化,并且已经初始化,其值就不能再修改。对于类类型的const动态对象,如果该类提供了默认的构造函数,则此对象可隐式初始化。
内置内型对象或未提供默认构造函数的类类型对象必须初始化。
7.const数据成员
在类中说明const数据成员时,只能通过成员初始化列表的方式来生成构造函数对数据成员初始化。
8.volatile
有些编译程序在编译过程中还改变 表达式的计算顺序,volatile可以防止这些改变的发生。
volatile用法跟const差不多。
- 重温C++ primer 之const总结
- 重温C++ primer 之const总结
- C++ Primer 笔记之const总结
- 重温C++ primer 之重载符操作与转换总结
- C++primer——const总结
- C++Primer-- const
- C语言总结之const
- 重温《C++ Primer》笔记九 const形参小结
- const 重温
- C++Primer学习之二#define,const,constexpr
- C++primer——const总结4--重载和 const 形参
- C++ primer学习: const 总结
- C++Primer----顶层const和底层const
- const 引用(c++primer笔记)
- C++primer :const限定符
- 重温c语言之收获
- 重温c语言之环境变量
- 重温C语言之路
- jQuery基础教程之强大的选择器(基本选择器)
- 【url】The reference to entity "characterEncoding" must end with the ';' delimiter
- cookie的基本用法
- 关于Java中的final
- js 树 增 减 编辑 --- 整了一个多星期才完成
- 重温C++ primer 之const总结
- Android menu菜单详解
- char *unicodeToUtf8(const WCHAR *zWideFilename) WCHAR *mbcsToUnicode(const char *zFilename)
- 网络推广中的博客推广法
- ThreadPool
- 用VIM搭建Python开发环境
- linux内核空间与用户空间互访操作
- Session对象在各浏览器中的有效范围
- PHP explode() 函数