声明数据成员之前成员函数中数据成员的可访问性

时间:2012-03-20 08:27:10

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

考虑以下代码:

class Test
{
public:

Test() { i = 0;  }

private:

int i;
};

数据成员'i'甚至在声明/定义之前就被使用了。这不应该是编译错误吗? (它汇编得很好!!!)

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

class Test
{
public:

Test() { i = 0;  } // constructor

private:

int i;  //datamemeber
};
main()
{
Test obj; // memory allocated only here
}

只在main中创建obj后调用构造函数。然后分配i的内存。并且调用构造函数,因此i

具有范围和可见性