具有静态数据成员的Point类
#include "stdafx.h"
#include <iostream>
using namespace std;
class Point
{
public:
//构造函数的声明,将count计数器++,每调用一次构造函数就加一次
Point(int xx = 0, int yy = 0);
//复制构造函数的声明,将count计数器++,每调用一次构造函数就加一次
Point(Point &p) {
x = p.x;
y = p.y;
count++;
}
~Point() { count--; }//析构函数消除对象count自动减一
int Getx() { return x; }
int Gety() { return y; }
void ShowCount() {//显示静态成员的函数
cout << " Object count=" << count << endl;
}
private:
int x, y;
static int count;//定义静态的成员
};
//构造函数的实现
Point::Point(int xx, int yy)
{
x = xx;
y = yy;
count++;
}
int Point::count = 0;//静态成员变量的定义和初始化,使用类名调用
int main()
{
Point a(4, 5);//定义对象会调用一次构造函数
cout << "Point A:" << a.Getx() << "," << a.Gety();//输出point的x和y
a.ShowCount();//输出count
Point b(a);//使用复制构造函数定义对象b,会调用复制构造函数,是count加一
cout << "Point B:" << b.Getx() << "," << b.Gety();
b.ShowCount();
return 0;
}
具有静态函数成员的Point类
#include "stdafx.h"
#include<iostream>
using namespace std;
class Point
{
public:
Point(int x = 0, int y = 0) :x(x), y(y) {
count++;
}
Point(Point &p) {
x = p.x;
y = p.y;
count++;
}
~Point() { count-- };
int Getx() { return x; }
int Gety() { return y; }
static void ShowCount() {//静态成员
cout << " Object count =" << count << endl;
}
private:
int x, y;
static int count;//静态数据成员
};
int Point::count = 0;//静态数据成员的初始化
int main()
{
Point a(4, 5);
cout << "Point A:" << a.Getx() << "," << a.Gety();
Point::ShowCount();//输出count个数,不使用对象调用使用类::函数名调用
Point b(a);
cout << "Point B:" << b.Getx() << "," << b.Gety();//不依赖对象直接访问静态数据
Point::ShowCount();
return 0;
}
本文通过实例介绍了C++中静态数据成员的使用,包括静态数据成员的声明、初始化、访问以及静态成员函数的调用。在示例中,展示了如何在Point类中使用静态成员来跟踪对象的数量,并通过构造函数和复制构造函数更新计数。

被折叠的 条评论
为什么被折叠?



