常用概念
常成员即不能被修改的成员,一般只读。
关键字const
通常包含:常对象、常成员函数、常数据成员。
常对象只能调用常成员函数,不能调用其他一般函数。
一般对象可以调用常成员函数。在重载时首先调用一般成员函数。
常数据成员 一般是类中的常量,只能在初始化列表中进行初始化。
示例代码
// An highlighted block
#include <iostream>
#include <cstring>
using namespace std;
class Cat
{
public:
Cat(char *s);
~Cat();
void Print();
static void Display(Cat&); //静态成员函数
private:
char name[50];
int age;
static int count; //count是静态的、共用的、唯一的。静态的都要初始化(写在类的外面)
};
//通过传递参数访问非静态变量
void Cat::Display(Cat& cat) //静态成员函数的函数体,只能访问静态变量,但非静态函数可以访问静态变量!
{
cout << "这是静态成员函数被调用:" << Cat::count << endl;
cout << cat.name << endl;
}
int Cat::count = 0; //类的静态数据成员初始化,且不写static
Cat::Cat(char *name)
{
strcpy(this->name, name);
count++; //用来记录一共有多少个对象
cout << "一共有" << Cat::count << "只猫!" << endl; //注意写法,count 是cat类的静态数据成员
}
Cat::~Cat(){}
void Cat::Print()
{
cout << this->name << endl;
}
int main()
{
Cat a("波斯猫");
Cat b("加菲猫");
Cat c("花猫");
a.Print(); //非静态成员函数的调用!
b.Print();
// a.Display();
// b.Display();
// c.Display();
Cat::Display(a); //这样调用明确可以看出是静态成员函数!
cout << "测试一下!" << endl;
return 0;
}
`