C++入门静态成员详解(定义实现原理使用注意事项)
Posted 正在起飞的蜗牛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++入门静态成员详解(定义实现原理使用注意事项)相关的知识,希望对你有一定的参考价值。
1、类的静态成员
(1)在类中用static修饰成员,则该成员是静态成员;
(2)静态成员是属于类本身的,所有类的对象共享;
(3)类的对象都可以访问静态成员,但是所有类的成员访问的静态成员都是同一份静态成员;
(4)静态成员在类内部声明时加static声明,在类外定义静态成员时无需添加static修饰;
2、静态成员的使用场景
(1)因为静态成员是属于类而不是属于单个对象的,所以静态成员用来记录类相关的信息;
(2)比如:用静态成员来统计创建了多少个类的对象;
3、、静态成员使用
3.1、示例代码
#include <iostream>
using namespace std;
class Person
private:
public:
int age; // 普通成员变量
static int cnt; //统计程序存在的中类的对象个数
Person(void); //构造函数
~Person(void); //析构函数
;
//在构造函数中cnt加一
Person::Person(void)
age = 18;
Person::cnt++; //方式1
//cnt++; //方式2
//this->cnt++; //方式3
//在析构函数中cnt减一
Person::~Person(void)
Person::cnt--;
// 对Person类中的静态成员定义
int Person::cnt;
int main(void)
cout << "Person::cnt = " << Person::cnt << endl;
Person *p1 = new Person();
cout << "Person::cnt = " << Person::cnt << endl;
Person *p2 = new Person();
cout << "Person::cnt = " << Person::cnt << endl;
Person *p3 = new Person();
cout << "Person::cnt = " << Person::cnt << endl;
delete(p1);
cout << "Person::cnt = " << Person::cnt << endl;
delete(p2);
cout << "Person::cnt = " << Person::cnt << endl;
delete(p3);
cout << "Person::cnt = " << Person::cnt << endl;
return 0;
(1)静态变量和普通变量的区别:静态变量在类中只是用static来声明,需要在类外进行定义;
(2)创建Person类的对象时会调用构造函数,构造函数会对cnt加一;
(3)销毁Person类对象时会调用析构函数,析构函数会对cnt减一;
上面代码的效果:用类的cnt静态变量来统计程序中还存放多少个Person类的对象;
3.2、代码结果分析
Person::cnt = 0
Person::cnt = 1
Person::cnt = 2
Person::cnt = 3
Person::cnt = 2
Person::cnt = 1
Person::cnt = 0
(1)每次创建Person类的对象都会调用对象自己的构造函数,从上面的程序执行结果可以得出结果,每个对象的构造函数操作的cnt都是同一份cnt;
(2)析构函数也是如此;
总结:对象操作的类静态成员都是同一份;
4、静态成员的使用注意事项
(1)静态成员变量/函数,需要在类外面进行定义;
(2)普通成员函数可以调用静态成员变量和函数;
(3)静态函数只能访问静态函数和静态变量,不能访问任何非静态的东西;
(4)在对象的构造函数中不能对静态变量进行初始化,因为静态变量不属于单个对象,不需要对象去初始化;
5、静态成员的本质
(1)从上面的例子可以看出,静态变量在类中用static声明,但是要在类外进行定义;普通的成员变量都是创建对象时自动创建的;
(2)静态成员的本质就是全局变量和全局函数,在类中用static声明,相当于把类和这个全局变量/函数进行绑定;
(3)因为静态成员是全局变量/函数,生命周期是整个程序的生命周期,所以我们不需要创建对象就可以使用静态成员;
推荐
我会在C++专栏持续根据更新C++相关的知识点,这里也给大家推荐一款学习C++的神器,我也是在用这一款神器在学习C++。
链接:学习神器跳转
如果你是想入门C++这门语言或者是找C++岗位的工作,都推荐你试试这个网站,里面有针对C++知识点的选择题、编程题,更有C++岗位的面试题,还可以在里面交流行业信息
以上是关于C++入门静态成员详解(定义实现原理使用注意事项)的主要内容,如果未能解决你的问题,请参考以下文章