中国农产品,简脂虎,陈豪陈茵媺车震
静态成员:在定义前面加了static关键词的成员。
class a { public: a(int a, int b):m_a(a),m_b(b) { num += m_a + m_b; } ~a(){ } void fun(); // 普通成员函数 static void printnum() // 静态成员函数 { // 在静态成员函数中,不能访问非静态成员变量,也不能调用非静态成员函数 std::cout << num << std::endl; } private: int m_a; // 普通成员变量 int m_b; // 普通成员变量 static int num; // 静态成员变量 }; // 静态成员必须在定义类的文件中对静态成员变量进行初始化,否则会编译出错。 int a::num = 0; int main() { a a1(1,1); a::printnum(); // 访问静态函数 a a2(1,1); a::printnum(); // 访问静态函数 return 0; }
输出结果
2 4
这里需要注意的是sizeof
运算符不会计算静态成员变量的大小,如下栗子:
class ctest { int n; static int s; };
则sizeof(ctest)
等于4
a::printnum();
a a; a.printnum();
a *p = new a(); p->printnum();
a a; a & ref = a; ref.printnum();
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论