大佬教程收集整理的这篇文章主要介绍了C++类的静态成员笔记,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
下面是C++类的静态成员笔记。
用关键字static声明
为该类的所有对象共享,静态数据成员具有静态生存期
必须在类外定义和初始化,用(::)来指明所属的类
举例说明-具有静态数据成员的Point类
代码示例:
1 #include<iostream> 2 3 using namespace std; 4 5 class Point //Point类定义 6 { 7 public: //外部接口 8 Point(int x = 0, int y = 0):x(X), y(y) //构造函数 9 { 10 count++; 11 } 12 13 Point(Point &p) //复制构造函数 14 { 15 x = p.x; 16 y = p.y; 17 count++; 18 } 19 20 ~Point() //析构函数,在main函数return返回前调用 21 { 22 count--; 23 } 24 25 int getX() 26 { 27 return x; 28 } 29 30 int getY() 31 { 32 return y; 33 } 34 35 void showCount() 36 { 37 cout << "Object count = " << count << endl; 38 } 39 40 private: //私有数据成员 41 int x,y; 42 static int count; //静态数据成员 43 }; 44 45 int Point::count = 0; //静态数据成员定义和初始化,使用类名限定 46 47 int main(void) 48 { 49 Point a(4,5); 50 cout << "Point a: " << a.getX() << "," << a.getY(); 51 a.showCount(); //输出对象个数 52 53 Point b(a); //复制构造函数调用,定义对象b,其构造函数会使得count++ 54 cout << "Point B:" << b.getX() << "," << b.getY(); 55 b.showCount(); 56 57 58 return 0; 59 }
运行结果:
1 Point a: 4,5Object count = 1
2 Point B:4,5Object count = 2
类外代码可以使用类名和作用域操作符来调用静态成员函数
静态成员函数主要用于处理该类的静态数据成员,可以直接调用静态成员函数
如果访问非静态成员,要通过对象来访问
举例说明-具有静态数据/函数成员的Point类
代码示例:
1 #include<iostream> 2 3 using namespace std; 4 5 class Point //Point类定义 6 { 7 public: //外部接口 8 Point(int x = 0, int y = 0):x(X), y(y) //构造函数 9 { 10 count++; 11 } 12 13 Point(Point &p) //复制构造函数 14 { 15 x = p.x; 16 y = p.y; 17 count++; 18 } 19 20 ~Point() //析构函数,在main函数return返回前调用 21 { 22 count--; 23 } 24 25 int getX() 26 { 27 return x; 28 } 29 30 int getY() 31 { 32 return y; 33 } 34 35 static void showCount() //静态函数成员 36 { 37 cout << "Object count = " << count << endl; 38 } 39 40 private: //私有数据成员 41 int x,y; 42 static int count; //静态数据成员 43 }; 44 45 int Point::count = 0; //静态数据成员定义和初始化,使用类名限定 46 47 int main(void) 48 { 49 Point::showCount(); 50 51 Point a(4,5); 52 cout << "Point a: " << a.getX() << "," << a.getY(); 53 54 Point::showCount(); 55 //a.showCount(); //也可以输出对象个数 56 57 Point b(a); //复制构造函数调用,定义对象b,其构造函数会使得count++ 58 cout << "Point B:" << b.getX() << "," << b.getY(); 59 60 Point::showCount(); 61 //b.showCount();//也可以输出对象个数 62 63 64 return 0; 65 }
运行结果:
1 Object count = 0
2 Point a: 4,5Object count = 1
3 Point B:4,5Object count = 2
以上是大佬教程为你收集整理的C++类的静态成员笔记全部内容,希望文章能够帮你解决C++类的静态成员笔记所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。