静态成员变量 与 静态成员函数
程序员文章站
2022-09-27 14:00:03
``` // // main.cpp // 静态成员变量 // 静态成员函数 // Created by mac on 2019/4/29. // Copyright © 2019年 mac. All rights reserved. // 如果一个成员变量被声明为static,那么该类的所有对象都 ......
// // main.cpp // 静态成员变量 // 静态成员函数 // created by mac on 2019/4/29. // copyright © 2019年 mac. all rights reserved. // 如果一个成员变量被声明为static,那么该类的所有对象都可以访问该变量。 // 如果一个成员函数被声明为static,那么他可以在类的任何实例化之前被调用。 // 成员函数加上const之后,就不能在此成员函数中对成员变量进行修改了。这个修改包括改变数值大小,赋值操作等。 // 可以创建一个由同一个类的所有对象共享的成员变量。要创建这样的成员,只需要将关键字static放在变量声明的前面 // 注意:声明提供了有关变量或函数的存在和类型的信息 而定义则提供了声明中包含的所有信息,另外还将为被定义的变量与函数分配内存 // 静态成员变量必须在类中声明,并在类外部进行定义。 // 纯虚函数就是c++的接口 // 静态成员函数无法访问非静态变量 #include <iostream> using namespace std; class widget{ private: double price; int quantity; public: widget(double p,int q){ price=p; quantity=q; } double getprice() const{ return price; } int getquantity() const{ return quantity; // quantity++; //报错,不能对成员变量进行修改。 } }; class statdemo{ private: static int x;//静态成员的声明 int y; public: void setx(int a) const{x=a;} void sety(int b) {y=b;} //此处对成员函数进行const是错误的 int getx(){return x;} int gety(){return y;} static int addsame(); }; int statdemo::addsame(){ return x+x; //静态成员函数只能访问静态成员变量 } int statdemo::x;//静态成员的定义 int main(int argc, const char * argv[]) { widget w1(14.5,100),w2(12.75,500); cout<<w1.getquantity()<<" "<<w2.getquantity()<<endl; statdemo obj1,obj2; obj1.setx(5); obj1.sety(10); obj2.sety(20); cout<<obj1.getx()<<" "<<obj2.getx()<<endl; cout<<obj1.getx()<<" "<<obj2.gety()<<endl; return 0; }
运行结果
100 500 5 5 5 20 program ended with exit code: 0
参考文献
- 《精通c++(第9版)》
下一篇: MySQL ERROR 1054 的问题