文件范围和访问规则

时间:2013-06-05 13:26:47

标签: c++

我在IKM测试中看到类似下面的内容,代码在一个文件中:

class A{

public:
    int a;
    A();

protected:
    int x;

private:
    int y;

};

void ARandomFunction(){
    //Implementation
}

A类的哪些变量可以访问ARandomFunction()?一般来说,如果decalarations都在同一个文件中,可以访问什么?

3 个答案:

答案 0 :(得分:1)

这些变量将是每个实例(非静态成员变量),因此您首先需要创建一个对象来访问它们。只有public个成员可以从一个独立的函数访问,除非该函数被声明为该类的friend,在这种情况下可以访问所有成员。

那说它们是否在同一个文件中并不重要。一旦在实现函数的地方看到类定义,就可以访问成员。

答案 1 :(得分:0)

在同一个文件中没有任何更改,您的功能只能访问a public而您的功能不是A的成员(对于private成员)或它的子类(对于protected成员)。

答案 2 :(得分:0)

据我所知,使用上面的示例ARandomFUnction可以访问公共变量和函数,而不管继承。只有当ARandomFunction包含在继承自或属于类A的成员的类中时,才能访问受保护的变量。私有变量和方法只能从同一个类访问。