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