c++类里初始化各种类型的数据成员
发布日期:2021-09-12 06:44:49 浏览次数:2 分类:技术文章

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

c++里初始化静态、非静态,const以及引用的数据成员各不相同


静态成员初始化

class a{
private: static int i1 = 1; //错误 static int i2; //应该这么做 static const int i3 =2; //正确 int i4 = 1; //正确};int a::i2 = 1; //在这里定义

  总结一下,在类里面的静态数据成员,只有常量可以在类内定义,非常量的静态数据成员统一都在类内声明,类外定义

  声明只是告诉编译器他的类型,定义时才分配内存空间
  因为静态成员是类级别的,不是对象级别的,它的生存周期和源程序等同,为类所有的对象共享,所以如果在类里面就能定义分配内存空间,那么每一个对象被创建时都会分配一次内存,显然是不合理的,所以就放在类外,只分配一次内存空间
  而至于常量静态数据成员,编译器知道他是一个常量,不会发生改变,所以可以在类内定义初始化
  (小知识:一个变量只有可以拥有类外定义的情况下,才能被获得地址)
  

const以及引用类型

class a{private:    int i1;    const int &i2;    int &i3;    const int i4;public:    a(int tmp) : i2(tmp), i3(tmp), i4(tmp) {}};

  初始化const以及引用类型的数据成员的唯一机会就是通过构造函数初始值

转载地址:https://blog.csdn.net/weixin_36888577/article/details/79755320 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:c++隐式的类类型转换
下一篇:c++类中使用signal函数

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月22日 06时12分07秒