[C++_4]static_const_mutable

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;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值