我在IKM测试中看到类似下面的内容,代码在一个文件中:
class A{
public:
int a;
A();
protected:
int x;
private:
int y;
};
void ARandomFunction(){
//Implementation
}
A类的哪些变量可以访问ARandomFunction()?一般来说,如果decalarations都在同一个文件中,可以访问什么?
答案 0 :(得分:1)
这些变量将是每个实例(非静态成员变量),因此您首先需要创建一个对象来访问它们。只有public
个成员可以从一个独立的函数访问,除非该函数被声明为该类的friend
,在这种情况下可以访问所有成员。
那说它们是否在同一个文件中并不重要。一旦在实现函数的地方看到类定义,就可以访问成员。
答案 1 :(得分:0)
在同一个文件中没有任何更改,您的功能只能访问a
public
而您的功能不是A
的成员(对于private
成员)或它的子类(对于protected
成员)。
答案 2 :(得分:0)
据我所知,使用上面的示例ARandomFUnction可以访问公共变量和函数,而不管继承。只有当ARandomFunction包含在继承自或属于类A的成员的类中时,才能访问受保护的变量。私有变量和方法只能从同一个类访问。