我看到的东西像一个IKM测试下面的代码是在一个单独的文件:文件范围和访问规则
class A{
public:
int a;
A();
protected:
int x;
private:
int y;
};
void ARandomFunction(){
//Implementation
}
其中A类的变量可以ARandomFunction()访问?一般来说,如果所有的符号都在同一个文件中,可以访问什么?
我看到的东西像一个IKM测试下面的代码是在一个单独的文件:文件范围和访问规则
class A{
public:
int a;
A();
protected:
int x;
private:
int y;
};
void ARandomFunction(){
//Implementation
}
其中A类的变量可以ARandomFunction()访问?一般来说,如果所有的符号都在同一个文件中,可以访问什么?
作为一个在同一个文件改变不了什么,你的函数只能访问a
,因为它是public
和你的函数不是A
成员(为private
成员),也不是一个子类的它(为protected
成员)。
这些变量将是每个实例(非静态成员变量),因此您首先需要创建一个对象来访问它们。只有public
成员可以从独立函数访问,除非函数被声明为该类的函数friend
,在这种情况下可以访问所有成员。
这就是说他们是否在同一个文件中并不重要。一旦在函数实现的地方可见类定义,就可以访问成员。
据我所知,使用上面的示例ARandomFUnction可以访问公共变量和函数,而不管继承。只有当ARandomFunction包含在继承自A类或A类成员的类中时,才能访问受保护的变量。只能从同一个类访问专用变量和方法。
假设公有继承模型? – mezamorphic
我相信如此。在很长一段时间内没有用C++编程,所以如果我的信息不够详细,我很抱歉。 – StMotorSpark
这是正常的没有什么不同。 –