<small id='T7Fa0'></small><noframes id='T7Fa0'>

  • <i id='T7Fa0'><tr id='T7Fa0'><dt id='T7Fa0'><q id='T7Fa0'><span id='T7Fa0'><b id='T7Fa0'><form id='T7Fa0'><ins id='T7Fa0'></ins><ul id='T7Fa0'></ul><sub id='T7Fa0'></sub></form><legend id='T7Fa0'></legend><bdo id='T7Fa0'><pre id='T7Fa0'><center id='T7Fa0'></center></pre></bdo></b><th id='T7Fa0'></th></span></q></dt></tr></i><div id='T7Fa0'><tfoot id='T7Fa0'></tfoot><dl id='T7Fa0'><fieldset id='T7Fa0'></fieldset></dl></div>
    <tfoot id='T7Fa0'></tfoot>
  • <legend id='T7Fa0'><style id='T7Fa0'><dir id='T7Fa0'><q id='T7Fa0'></q></dir></style></legend>

      <bdo id='T7Fa0'></bdo><ul id='T7Fa0'></ul>
      1. 为什么需要在类之外定义静态数据成员?

        Why does a static data member need to be defined outside of the class?(为什么需要在类之外定义静态数据成员?)

          <tfoot id='HoJdE'></tfoot>
          1. <i id='HoJdE'><tr id='HoJdE'><dt id='HoJdE'><q id='HoJdE'><span id='HoJdE'><b id='HoJdE'><form id='HoJdE'><ins id='HoJdE'></ins><ul id='HoJdE'></ul><sub id='HoJdE'></sub></form><legend id='HoJdE'></legend><bdo id='HoJdE'><pre id='HoJdE'><center id='HoJdE'></center></pre></bdo></b><th id='HoJdE'></th></span></q></dt></tr></i><div id='HoJdE'><tfoot id='HoJdE'></tfoot><dl id='HoJdE'><fieldset id='HoJdE'></fieldset></dl></div>

            1. <small id='HoJdE'></small><noframes id='HoJdE'>

                <bdo id='HoJdE'></bdo><ul id='HoJdE'></ul>
                  <tbody id='HoJdE'></tbody>
                <legend id='HoJdE'><style id='HoJdE'><dir id='HoJdE'><q id='HoJdE'></q></dir></style></legend>

                  本文介绍了为什么需要在类之外定义静态数据成员?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  根据 静态数据成员在 IBM C++ 知识中心:

                  According to Static data members on the IBM C++ knowledge center:

                  类的成员列表中静态数据成员的声明不是定义.您必须在类声明之外的命名空间范围内定义静态成员.

                  The declaration of a static data member in the member list of a class is not a definition. You must define the static member outside of the class declaration, in namespace scope.

                  这是为什么?关于内存分配的原理图是什么?

                  Why is that? What's the schematic behind that regarding the memory allocation?

                  推荐答案

                  这是语言的一条规则,称为一个定义规则.在一个程序中,每个静态对象(如果使用的话)必须定义一次,而且只能定义一次.

                  It's a rule of the language, known as the One Definition Rule. Within a program, each static object (if it's used) must be defined once, and only once.

                  类定义通常在头文件中,包含在多个翻译单元中(即来自多个源文件).如果标题中的静态对象声明是一个定义,那么您最终会得到多个定义,每个包含标题的单元中都有一个定义,这会破坏规则.因此,它不是一个定义,您必须在其他地方提供一个定义.

                  Class definitions typically go in header files, included in multiple translation units (i.e. from multiple source files). If the static object's declaration in the header were a definition, then you'd end up with multiple definitions, one in each unit that includes the header, which would break the rule. So instead, it's not a definition, and you must provide exactly one definition somewhere else.

                  原则上,该语言可以对内联函数执行它所做的事情,允许将多个定义合并为一个.但事实并非如此,所以我们坚持这条规则.

                  In principle, the language could do what it does with inline functions, allowing multiple definitions to be consolidated into a single one. But it doesn't, so we're stuck with this rule.

                  这篇关于为什么需要在类之外定义静态数据成员?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  C++ stl unordered_map implementation, reference validity(C++ stl unordered_map 实现,参考有效性)
                  C++: Is it possible to use a reference as the value in a map?(C++:是否可以使用引用作为映射中的值?)
                  Where ampersand quot;amp;quot; can be put when passing argument by reference?(其中符号“amp;通过引用传递参数时可以放置吗?)
                  Why can a non-const reference parameter be bound to a temporary object?(为什么可以将非常量引用参数绑定到临时对象?)
                  What is a dangling reference?(什么是悬空引用?)
                  C++ reference changes when push_back new element to std::vector(当 push_back 新元素到 std::vector 时,C++ 引用发生变化)

                  <legend id='MMmA3'><style id='MMmA3'><dir id='MMmA3'><q id='MMmA3'></q></dir></style></legend>
                  <i id='MMmA3'><tr id='MMmA3'><dt id='MMmA3'><q id='MMmA3'><span id='MMmA3'><b id='MMmA3'><form id='MMmA3'><ins id='MMmA3'></ins><ul id='MMmA3'></ul><sub id='MMmA3'></sub></form><legend id='MMmA3'></legend><bdo id='MMmA3'><pre id='MMmA3'><center id='MMmA3'></center></pre></bdo></b><th id='MMmA3'></th></span></q></dt></tr></i><div id='MMmA3'><tfoot id='MMmA3'></tfoot><dl id='MMmA3'><fieldset id='MMmA3'></fieldset></dl></div>
                    <bdo id='MMmA3'></bdo><ul id='MMmA3'></ul>

                        <tbody id='MMmA3'></tbody>
                        <tfoot id='MMmA3'></tfoot>

                          • <small id='MMmA3'></small><noframes id='MMmA3'>