【问题标题】:Accessibility of data member in member function before declaration of data member声明数据成员之前成员函数中数据成员的可访问性
【发布时间】:2012-03-20 08:27:09
【问题描述】:

考虑这段代码:

class Test
{
public:

Test() { i = 0;  }

private:

int i;
};

数据成员“i”在声明/定义之前就已使用。这不应该是编译错误吗? (编译得很好!!!)

【问题讨论】:

    标签: c++ private-members class-members


    【解决方案1】:

    规则是在类定义中定义的成员函数被编译,就好像它们是在类定义之后立即定义的一样。

    【讨论】:

      【解决方案2】:

      不应该,在类定义的上下文中,所有成员、数据成员或函数都具有完全的可见性。

      【讨论】:

        【解决方案3】:

        声明前使用的数据成员在哪里?

        class Test
        {
        public:
        
        Test() { i = 0;  } // constructor
        
        private:
        
        int i;  //datamemeber
        };
        main()
        {
        Test obj; // memory allocated only here
        }
        

        只有在 main 中创建了 obj 后才会调用构造函数。然后分配 i 的内存。并调用构造函数,因此 i 有范围和可见性

        【讨论】:

          猜你喜欢
          • 2015-04-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-03
          • 1970-01-01
          • 2011-08-27
          • 1970-01-01
          • 2014-07-29
          • 2011-11-23
          相关资源
          最近更新 更多