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