C++ 中 const 常量函数 static 变量 整理


const 只对其左边起作用,如果左边没数据 则对右边起作用

如:const int * p; //修饰int 指向的数不能修改(即:不能 *p = 3形式),但指针可以修改

int const * p 同const int *p ;

int * const p 修饰*  是常量指针  指针不能修改(即:不能 int a ,p= &a  )但其指向变量可以修改(可以*p = 3))

常成员函数声明:<类型标志符>函数名(参数表)const;

说明:

(1)const是函数类型的一部分,在实现部分也要带该关键字。

(2)const关键字可以用于对重载函数的区分。

(3)常成员函数不能更新类的成员变量,也不能调用该类中没有用const修饰的成员函数,只能调用常成员函数。

1、const成员:只能在构造函数后的初始化列表中初始化

2、static成员:初始化在类外,且不加static修饰

3、const static成员:类只有唯一一份拷贝,且数值不能改变。因此,可以在类中声明处初始化,也可以像static在类外初始化

4.const 对象只能调用const成员函数

.在类中允许存在同名的常量函数和非常量函数,编译器根据调用该函数的对象选择合适的函数

当非常量对象调用该函数时,先调用非常量函数;

当常量对象调用该函数时,只能调用常量函数;

如果在类中只有常量函数而没有与其同名的非常量函数,则非常量与常量对象都可调用该常量函数;

常量引用返回值

如果你想从常量方法(函数)中通过引用返回this对象的一个成员,你应该使用常量引用来返回它,即const X&

陷阱:有一种例外,常量成员函数可以改变静态数据成员;另外,如果使用关键字mutable修饰数据成员,那么甚至常量数据成员也可以修改它。不过别担心这种例外情况。

对于X类型的非常量成员函数而言,其this指针的类型是X * const,该指针自身是常量;但是对于X类型的常量成员函数而言,其this指针的类型是const X * const,是一个常量指针。

C++ Primer Plus 第6版 中文版 清晰有书签PDF+源代码

读C++ Primer 之构造函数陷阱

读C++ Primer 之智能指针

读C++ Primer 之句柄类

将C语言梳理一下,分布在以下10个章节中:

  1. Linux-C成长之路(一):Linux下C编程概要
  2. Linux-C成长之路(二):基本数据类型
  3. Linux-C成长之路(三):基本IO函数操作
  4. Linux-C成长之路(四):运算符
  5. Linux-C成长之路(五):控制流
  6. Linux-C成长之路(六):函数要义
  7. Linux-C成长之路(七):数组与指针
  8. Linux-C成长之路(八):存储类,动态内存
  9. Linux-C成长之路(九):复合数据类型
  10. Linux-C成长之路(十):其他高级议题

本文永久更新链接地址:

相关内容