类的静态成员
以一个例子来解释类的静态成员的必要性,定义一个类Point,该类分为坐标x,y 和点的个数count,在主函数定义类的对象的时候,我们想每定义一个类,就是得count加1,从而达到记录点的个数。所以可以在变量中引入static
的类型,通过该类型可以保证所有该类的对象都共享该变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #include<iostream> using namespace std; class Point { private: int x, y; static int count; 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; } }; int Point::count = 0;
int main(void) { Point a(4, 5); cout << "Point A:" << a.getX() << "," << a.getY(); Point::showCount(); Point b; cout << "Point B:" << b.getX() << "," << b.getY(); Point::showCount(); return 0; }
|
复制构造函数
使用类型:对象之间数据的传递
1.定义对象进行复制
1 2
| Point a(10,20); Point b=a;
|
2.传参
1 2 3 4
| void fun1(Point p){ cout<<p.getX()<<endl; } 调用 fun1(b);
|
3.传参
1 2 3 4
| Point fun2(){ return Point(1,2); } 调用 b=fun(2);
|
具体的代码如下
1 2 3 4 5
| Point(Point& p) { x = p.x; y = p.y; count++; }
|