static静态成员变量和静态成员函数
静态成员变量的特性:
1.属于类,不属于某个具体对象,因此不创建对象也可以访问。
2.内存分配在静态区,所有对象共用这份内存,到程序结束时才释放。
静态成员变量的定义(初始化):
1.初始化格式 type class::name = value;
2.需要在类的外部且在代码块之外定义。
3.private的静态成员变量,也一样在类的外部初始化,因为初始化不受存取权限的束缚。
#include <iostream> using namespace std; class Demo { public: static int num; Demo() { cout << "调用构造函数" << endl; } }; // 静态程艳变量的初始化 int Demo::num = 180; // 可以不赋值,静态区数据默认为零 // int Demo::num; int main(int argc, char *argv[]) { Demo demo; cout << "类访问 num is:" << Demo::num << endl; cout << "对象访问 num is:" << demo.num << endl; return 1; } 输出: 调用构造函数 类访问 num is:180 对象访问 num is:180
静态成员函数的特性:
1.属于类,不属于某个具体对象,因此不创建对象也可以访问。
2.存放在代码区,所有对象共享一个副本。
3.静态成员函数与普通成员函数的根本区别在于:普通成员函数有 this 指针,可以访问类中的任意成员;而静态成员函数没有 this 指针,只能访问静态成员(包括静态成员变量和静态成员函数)。
静态成员函数的定义:
1.在类外定义静态成员函数不需要static关键字。
#include <iostream> using namespace std; class Demo { public: static int num; int i; Demo() { cout << "调用构造函数" << endl; } static void printNum() { cout << "打印num:" << num << endl; } }; // 静态程艳变量的初始化 int Demo::num = 180; int main(int argc, char *argv[]) { Demo demo; Demo::printNum(); return 1; } 输出: 调用构造函数 打印num:180
浙公网安备 33010602011771号