2013-06-05 74 views
-1

我看到的东西像一个IKM测试下面的代码是在一个单独的文件:文件范围和访问规则

class A{ 

public: 
    int a; 
    A(); 

protected: 
    int x; 

private: 
    int y; 

}; 

void ARandomFunction(){ 
    //Implementation 
} 

其中A类的变量可以ARandomFunction()访​​问?一般来说,如果所有的符号都在同一个文件中,可以访问什么?

+0

这是正常的没有什么不同。 –

回答

0

作为一个在同一个文件改变不了什么,你的函数只能访问a,因为它是public和你的函数不是A成员(为private成员),也不是一个子类的它(为protected成员)。

1

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

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

0

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

+0

假设公有继承模型? – mezamorphic

+0

我相信如此。在很长一段时间内没有用C++编程,所以如果我的信息不够详细,我很抱歉。 – StMotorSpark