静态成员和静态成员函数
来源:互联网 发布:淘宝鹊桥佣金怎么赚 编辑:程序博客网 时间:2024/06/05 19:13
静态成员和静态成员函数
基本概念
普通成员变量每个对象有各自的一份,而静态成员变量一共就一份,为所有对象共享。
静态成员对象不需要通过对象就能访问
class CRectangle{public: CRectangle(int i,int j); ~CRectangle(); static void printTotal();protected:private: int w,h; static int nTotalArea; static int nTotalNumber;};CRectangle::CRectangle(int i,int j){ w=i;h=j; nTotalNumber++; nTotalArea+=w*h;}CRectangle::~CRectangle(){ nTotalNumber--; nTotalArea=nTotalArea-w*h;}int CRectangle::nTotalArea=0;int CRectangle::nTotalNumber=0;void CRectangle::printTotal(){ cout<<nTotalNumber<<","<<nTotalArea<<endl;}int main(){ CRectangle c1(3,3),c2(2,2); CRectangle::printTotal(); c1.printTotal(); return 0;}
输出:
相关注意事项
静态成员函数不能访问非静态成员变量
因为静态成员函数不是作用于对象,假设是访问非静态成员变量w,不知道是哪个对象的。
静态成员函数也不能访问非静态成员函数,因为非静态函数可以访问非静态成员,所以不可访问。
另需要考虑复制构造函数问题,
当参数为一个对象或者返回值为一个对象,异或直接构造初始化 class a(b);这些会导致生成临时变量,矩形数量会增多。
- 解决办法–写一个复制构造函数
CRectangle::CRectangle(const CRectangle & a) { w = a.w; h = a.h; nTotalNumber++; nTotalArea += w*h;}
0 0
- 静态成员变量和静态成员函数
- 静态成员和静态成员函数
- 静态成员和静态成员函数
- 静态数据成员和静态成员函数
- 静态数据成员和静态成员函数
- 静态成员函数和静态成员变量
- 静态成员变量 和 静态成员函数
- 静态成员和静态成员函数
- 静态成员变量和静态成员函数
- 静态成员变量和静态成员函数
- 静态成员数据和静态成员函数
- 静态数据成员和静态成员函数
- 静态数据成员和静态成员函数
- 静态数据成员和静态成员函数
- 静态成员函数和静态成员
- 静态成员函数和静态成员方法
- 静态成员变量和静态成员函数
- 静态数据成员和静态成员函数
- ajax提交form表单
- Symbol Browser plugins gedit.
- mysql异常宕机故障数据恢复思路整理
- 外键是否采用看业务应用场景,以及开发成本
- Apache Spark as a Service
- 静态成员和静态成员函数
- 15顺序 最小的最后
- Mysql event时间触发器,实现定时修改某些符合某一条件的某一字段
- LeetCode 204 Count Primes
- (C++)UrlEncode的标准实现
- 认识java中的堆和栈
- 51nod 1065 最小正子段和
- php programmer should know?
- 阿里巴巴开源代码