博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ primer 第七章之 类的静态成员
阅读量:4703 次
发布时间:2019-06-10

本文共 1140 字,大约阅读时间需要 3 分钟。

1.为什么需要静态成员?

对象与对象之间的成员变量是相互独立的,可以由地址看出,如下程序所示 ;

#include 
using namespace std;class myClass{public: int member;};int main(){ myClass a ,b; cout << "a成员变量的地址: "<<&a.member<

 

要想共用数据,则需要使用静态成员和静态方法 ;

 

2.数据成员可以分为静态变量、非静态变量两种。

  • 静态成员:
    •  静态成员的定义和声明要加个关键static ;
    •    

      静态成员不能访问非静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存;
  • 非静态成员:
    •  非静态成员的生存期决定于该类的生存期.

 

3.初始化类的静态成员

静态成员变量的初始化与一般成员变量的初始化不同,即它的初始化格式为:

<数据类型><类名>::<静态成员变量> = <值>

 

4.类的静态数据成员有两种访问方式

  • 静态成员变量使用前必须先初始化 ;
  • 静态成员变量在类内声明,且必须带static关键字;在类外初始化,且不能带static关键字
  • 如果静态成员变量的访问权限允许的话,即为public成员,可在程序中,按上述格式来引用静态成员变量;
  • 把变量声明为私有静态成员后只能通过该类的公有成员函数来访问。在访问前还需要创建一个类的对象;
    #include 
    using namespace std;class A{public: int getx(){ return A::x; } void setx(int i){ A::x =i; }private: static int x;};int A::x ;//一定要在main函数之外声明;int main(){ A a ; a.setx(2); cout<< a.getx(); return 0;}

       

5.静态成员函数

静态成员函数与静态成员变量一样,都是在类的内部实现,属于类定义的一部分:

  • 出现在类体外的函数不能指定关键字static;
  • 静态成员之间可以互相访问,包括静态成员函数访问静态成员变量和访问静态成员函数;
  • 非静态成员函数可以访问静态成员函数和静态成员变量;
  • 静态成员函数不能访问非静态成员函数和非静态成员变量;
  • 静态成员函数在类内声明,且必须带static关键字;在类外实现,且不能带static关键字

 

转载于:https://www.cnblogs.com/chenjz1993/p/6754341.html

你可能感兴趣的文章
【转】IT名企面试:微软笔试题(1)
查看>>
IO流入门-第十章-DataInputStream_DataOutputStream
查看>>
DRF的分页
查看>>
Mysql 模糊匹配(字符串str中是否包含子字符串substr)
查看>>
python:open/文件操作
查看>>
流程控制 Day06
查看>>
Linux下安装Tomcat
查看>>
windows live writer 2012 0x80070643
查看>>
tomcat 和MySQL的安装
查看>>
git常用操作
查看>>
京东SSO单点登陆实现分析
查看>>
u-boot启动第一阶段
查看>>
MySQL批量SQL插入性能优化
查看>>
定义列属性:null,default,PK,auto_increment
查看>>
用户画像展示
查看>>
C#中StreamReader读取中文出现乱码
查看>>
使用BufferedReader的时候出现的问题
查看>>
批处理文件中的路径问题
查看>>
hibernate出现No row with the given identifier exists问题
查看>>
为什么wait()和notify()属于Object类
查看>>