[C++_4]static_const_mutable
2014-03-01 10:22
459 查看
7 静态成员变量,函数
静态成员不属于某个对象,只是属于一个类,也不能被this调用;适用于:变量,方法被某一类通用,而不是单个对象。例如静态变量作类实例计数器,工具类
8 类方法const
const void print(bool newline=true); //返回值是只读的void print(bool newline=true)const; //常成员函数, Const成员函数不能改变对象的成员函数
成员函数中,末尾有无const也构成重载。如果两个函数一样,一个是const另一个是自由的,编译器会优先考虑自由的
如果对象一开始被定义是const的,就会优先调用const的,比如
9 mutable
在c++的类中,如果一个函数被const修饰,那么它将无法修改其成员变量的,但是如果这个成员变量是被mutable修饰的话,则可以修改。#include<iostream> using namespace std; class Ctest { mutable int cnt;//计数show()的次数 //public: static int Ccnt; //计数类实例的个数:私有静态成员 public: Ctest(); static void showCcnt(); void showcnt()const; void show()const; void show(); }; int Ctest::Ccnt = 0; //静态变量初始化必须放在类外面 Ctest::Ctest() { cnt = 0; Ccnt++; } void Ctest::show()const //不可修改对象,但由于mutable去除限制 { cnt++; cout << "const函数调用!" << endl; } void Ctest::show() { cnt++; cout << "非const函数调用!" << endl; } void Ctest::showcnt()const { cout << this->cnt << endl; } void Ctest::showCcnt() //静态函数的定义与普通函数一样 { cout << Ctest::Ccnt << endl; } int main() { const Ctest A; Ctest B; cout << "调用const A的show函数:" << endl; A.show(); A.show(); cout << "调用非const B的show函数:" << endl; B.show(); cout << "A中调用show的次数:" << endl; A.showcnt(); cout << "B中调用show的次数:" << endl; B.showcnt(); cout << "类实例个数:" << endl; Ctest::showCcnt(); return 0; }
相关文章推荐
- C++中static,const,mutable关键字
- c++中的const,static,volatie,mutable关键字
- 【c++】static、const、mutable关键词
- C++中的static、const、mutable用法学习
- C++(10):static、const、mutable、explicit成员
- C++中的四种转换:static_cast、const_cast、reinterpret_cast、dynamic_cast
- C/C++中const、mutable、volatile详解
- 使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。(转)
- C++中const、volatile、mutable的用法
- C++ static、const和static const 以及它们的初始化
- C++中const、volatile、mutable的用法
- 使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast
- C++中的static_cast,dynamic_cast,const_cast,reinterpret_cast
- C++中static_cast、const_cast、reinterpret_cast的用法举例,附带举例说明强制类型转换时int和int&的区别
- 总结C++中的所有强制转换函数(const_cast,reinterpret_cast,static_cast,dynamic_cast)
- C++里的强制类型转换符reinterpret_cast、static_cast 、dynamic_cast、const_cast 区别
- C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast
- C/C++中的extern关键字及其与static和const的关系
- C++的四个类型转换符dynamic_cast/const_cast/static_cast/reinterpret_cast
- 标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast(转)