c++类的常成员和静态成员的相关整理

本文详细介绍了C++中的常成员和静态成员。常成员包括常对象和常数据成员,常对象只能调用常成员函数,常数据成员初始化必须在构造函数中完成。静态成员分为静态数据成员和静态成员函数,它们不占用对象的内存空间,为所有对象共享,且静态数据成员需要在类外初始化。此外,还讨论了对象的内存分配和释放规则。

常成员与常对象

  • 常对象只能调用常成员函数。
  • 常数据成员的初始化只能通过构造函数的初始化列表进行。(不能被赋值,不能调用拷贝构造函数)

     ——常数据成员在定义对象时必须通过构造函数的初始化化表进行初始化。

  • 常成员函数不能调用没有const 修饰的成员。

   ——说明格式:  返回类型 成员函数名 (参数表) const;

静态数据成员

——只保留一个副本,为该类所有对象所共享。

——表示类属性,在程序开始时产生,程序结束时消失。

  • 静态数据成员在类内声明,类外初始化

类内声明:   static 数据类型 静态成员名;

类外初始化:    数据类型  类名::静态数据成员名 = 初始值            //不能加static。

(初始化与它的访问权限无关)

静态成员函数

  • 不能存储非静态成员
  • 没有this指针
  • 访问权限和普通成员一样。
  • 类的静态数据成员与全局对象(变量)一样,在数据段中分配内存。

 

类只是一个型,除静态数据成员外,在没有实例化成对象前不占任何内存。

对象的内存分配

  1. 全局对象占数据段的内存。
  2. 局部对象,为实参建立的临时对象——中。
  3. new 建立的动态对象——中。
  • 对象的内存空间分配:
  1. 数据成员——与对象的存储类别相关。
  2. 成员函数——代码段中。
  3. 数据成员拥有各自的内存空间,成员函数在内存中只有一个副本。

对象的内存空间释放

  1. 全局对象——程序结束时。
  2. 局部对象与实参对象——函数调用结束时。
  3. 动态对象——delete语句。
  4. 对象的成员函数——所有对象生命周期结束时。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值