#include <iostream>
using namespace std;
class Box
{
public:
static int objectCount;
// 构造函数定义
Box(double l=2.0, double b=2.0, double h=2.0)
{
cout <<"Constructor called." << endl;
length = l;
breadth = b;
height = h;
// 每次创建对象时增加 1
objectCount++;
}
double Volume()
{
return length * breadth * height;
}
private:
double length; // 长度
double breadth; // 宽度
double height; // 高度
};
// 初始化类 Box 的静态成员
int Box::objectCount = 0;
class smallBox:public Box
{
public:
//空构造函数,但必须为基类的构造函数传参。
smallBox():Box(1,2,3)
{}
};
int main(void)
{
Box Box1(3.3, 1.2, 1.5); // 声明 box1
Box Box2(8.5, 6.0, 2.0); // 声明 box2
smallBox sBox;
// 输出对象的总数
cout << "Total objects: " << Box::objectCount << endl; //输出为3,说明子类对象与父类共享静态成员
cout << "Total objects: " << Box1.objectCount << endl; //输出为3,说明子类对象与父类共享静态成员
cout << "Total objects: " << smallBox::objectCount << endl; //输出为3,说明子类对象与父类共享静态成员
cout << "Total objects: " << sBox.objectCount << endl; //输出为3,说明子类对象与父类共享静态成员
return 0;
}
总结:
1、类的静态成员相当于全局变量,是唯一的,在父类与子类之间共享。
2、静态变量的访问方式有两种:
- 直接通过类名进行访问(使用":")
- 通过类对象进行访问(使用".")