class Point1{
public:
Point1(int x=0,int y=0):x(x),y(y){
count++;
}
Point1(const Point1 &p);
~Point1(){count--;} //析构函数
int getx(){return x;}
int gety(){return y;}
static void showCount();
private:
int x,y;
static int count;
};
#include"point.h"
#include<iostream>
using namespace std;
int Point1::count=0; //静态数据成员定义和初始化,用类名限定。
//虽然是私有类型,但可以在这里初始化,其他局部作用域不可以
Point1::Point1(const Point1 &p):x(p.x),y(p.y){
count++;
}
void Point1::showCount(){
cout<<" count="<<count<<endl; //静态函数成员
}
//#include"point.h" 写这句会报错,显示refinition of class 重复定义,清华出的教材这么坑的吗
#include"Untitled2.cpp"
#include<iostream>
using namespace std;
int main() {
Point1 a(4,5);
cout<<"Point A: "<<a.getx()<<","<<a.gety();
Point1::showCount(); //因为是类属性,所以当然是用通过类名来调用更舒服
//a.~Point();
Point1 b(a);
cout<<"Point B: "<<b.getx()<<","<<b.gety();
Point1::showCount();
return 0;
}