C++中的类的静态成员与常对象
1.X.h文件:
#ifndef X_H_INCLUDED
#define X_H_INCLUDED
class CX
{
public:
static int CXCount;
CX();
~CX();
};
#endif // X_H_INCLUDED
2.CX.cpp(类的实现文件)
#include<iostream>
#include "X.h"
using namespace std;
int CX::CXCount=0;
CX::CX()
{
CXCount++;
cout<<"新建一个CX对象"<<endl;
cout<<"当前CX对象个数:"<<CXCount<<endl;
};
CX::~CX()
{
CXCount--;
cout<<"释放一个CX对象"<<endl;
cout<<"当前CX对象个数:"<<CXCount<<endl;
}
3.main.cpp
#include "X.h"
int main()
{
CX a,b,c;
CX*p1=new CX();
CX*p2=new CX();
delete p1;
delete p2;
return 0;
}
运行结果:
新建一个CX对象
当前CX对象个数:1
新建一个CX对象
当前CX对象个数:2
新建一个CX对象
当前CX对象个数:3
新建一个CX对象
当前CX对象个数:4
新建一个CX对象
当前CX对象个数:5
释放一个CX对象
当前CX对象个数:4
释放一个CX对象
当前CX对象个数:3
释放一个CX对象
当前CX对象个数:2
释放一个CX对象
当前CX对象个数:1
释放一个CX对象
当前CX对象个数:0
注意:静态成员不依附于某个对象!
5.常对象:用const来限制数据成员的变化!
#include<iostream>
using namespace std;
class A
{
int m_a;
public:
A(int a):m_a(a){
}
void setA(int a){
m_a=a;}
int getA()const{
return m_a;}
};
int main()
{
const A a(100);
a.setA(20);//注意!此处编译未通过!数据成员一旦赋值便不能再修改!
return 0;
}