加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 静态const(非整数)成员初始化语法背后的基本原理?

发布时间:2020-12-16 09:29:35 所属栏目:百科 来源:网络整理
导读:我知道如何初始化一个不是整数的静态成员,但我想知道,这个语法背后的基本原理是什么?我希望能够将值放在类中,就像你可以使用整数成员一样,la: class A { static const int i = 3;}; 我意识到这可能意味着更多的重建,如果我改变了值,因为它是标题的变化 –
我知道如何初始化一个不是整数的静态成员,但我想知道,这个语法背后的基本原理是什么?我希望能够将值放在类中,就像你可以使用整数成员一样,la:

class A {
  static const int i = 3;
};

我意识到这可能意味着更多的重建,如果我改变了值,因为它是标题的变化 – 但在某些情况下这是非常不可能的 – 并且就像改变标题中的#define一样糟糕.

对于编译器来说,它似乎并不是一件非常难以理解的东西.是否有技术原因,它的工作方式如何?或者仅仅是编译器执行将实现与定义分离的良好实践的情况?

解决方法

因为那是类声明.你还没有任何对象.

你需要在某个地方实际定义值 – 某处特定的地方.

由于它是静态的,它实际上占用了某个地方的空间.但是,由于具有该声明的.H文件可以在许多源文件中包含#included,哪一个定义了它所使用的实际空间?让编译器自动定义每个目标文件中的空间并让链接器对其进行排序将违反“One Definition Rule”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读