类属性和类方法
Posted liuchenxu123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类属性和类方法相关的知识,希望对你有一定的参考价值。
类属性和类方法同对象属性和对象方法的区别
当一个属性、方法被static修饰的时候,就叫做类属性、类方法,又叫做静态属性、静态方法 。
没有被static修饰的属性,就叫对象属性、对象方法,又叫实例属性、实例方法和非静态属性、非静态方法。
当一个属性被声明成类属性,那么所有的对象,都共享一个值,所有对象都可以修改这个值,一经修改前面的值将会被丢弃。
而对象属性,每个对象的对象属性的值都互不影响,修改一个对象的对象属性,另一个对象的对象属性不变。
代码演示
#include <iostream>
using namespace std;
class Box
{
public:
Box(int x,int y,int z):length(x),breadth(y),height(z)
{
cout <<"Constructor called." << endl;
// 每次创建对象时增加 1
Box::objectCount++;
}
double Volume()
{
return this->length * this->breadth * this->height ;
}
static int getCount()
{
return Box::objectCount;
}
private:
static int objectCount;
// 构造函数定义
double length; // 长度
double breadth; // 宽度
double height; // 高度
};
// 初始化类 Box 的静态成员,注意初始化时不加static
int Box::objectCount = 0;
int main(void)
{
// 在创建对象之前输出对象的总数
cout << "Inital Stage Count: " << Box::getCount() << endl;
Box Box1(3.3, 1.2, 1.5); // 声明 box1
Box Box2(8.5, 6.0, 2.0); // 声明 box2
// 在创建对象之后输出对象的总数
cout << "Final Stage Count: " << Box::getCount() << endl;
return 0;
}
以上是关于类属性和类方法的主要内容,如果未能解决你的问题,请参考以下文章
区分成员变量和类变量,this关键字,封装,静态方法和静态代码块,通通给我看懂(概念版) 后续有相关示例