重温C++ primer 之const总结

转载 2012年03月31日 13:47:18

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总结

const 成员函数的引入 We now can understand the role of the const that follows the parameter lists in the d...

c++primer学习笔记(3)-Compound Types(pointers and references) and const Qualifier.

1. The concept of Compound Types: A compound type is a type that is defined in terms of another typ...

C++ primer 七 const形参和实参

当形参是const时,必须要注意关于顶层const的。顶层const作用于对象本身: const int ci =42;                   //不能改变ci, const是顶层的 ...

《C++ Primer》读书笔记-第二章 05 const限定符

作者:马志峰 链接:https://zhuanlan.zhihu.com/p/23406123 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 声明: ...

c++ primer(第五版)笔记 第二章(4)const, decltype, auto

#ifndef LESSON_2_4_H #define LESSON_2_4_H #include extern const int ciExt; inline void prin...

C++ Primer Plus学习笔记之const修饰指针

《C++ Primer Plus》学习笔记之const修饰指针 首先来谈一下const与define的区别,大家都知道两者都可以定义常量,但是define有一个明显的缺陷:没有类型信息; 例如: #...

c++ primer 类 const

写个小程序来学习在类中有关const的用法。 1.const_stdy.h #ifndef _CONST_STDY_H_ #define _CONST_STDY_H_ #include using...
  • big_bit
  • big_bit
  • 2016年05月31日 20:51
  • 78

const限定符及复合类型-《C++ primer》

C++中类型可以分为三种 一,内置类型 内置类型是最基本的类型,如int,float,double等。 二,复合类型 复合类型是指基于其他类型定义的类型。C++语言有引用,指针,数组等。   引用通俗...

《C++ primer》英文第五版阅读笔记(五)——const

const 限定词 被const修饰的变量的值不能被改变。 被const修饰的变量必须在定义时进行初始化。 const要放在类型名前面。 初始化 const对象能够做大多数nonconst对象...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:重温C++ primer 之const总结
举报原因:
原因补充:

(最多只允许输入30个字)