【发布时间】:2022-01-05 17:47:57
【问题描述】:
只是试图抓住围绕 C++ 中类范围的概念。如果我们举个例子:
#include <iostream>
using namespace std;
string barValue="OUTSIDE CLASS";
class foo
{
public:
void print_bar()
{
cout<<barValue<<endl;
}
};
int main()
{
foo f;
f.print_bar();
return 0;
}
我想知道:
-
barValue变量是否在 Class 范围内? - 即使
barValue是在其中一个包含的文件中定义的,是否也能被接受? - 文件和所有包含的文件是否可以作为
foo类的作用域调用? - 我可以理解,如果
barValue在Class body之后定义,则不会被考虑。跟进是否意味着所有包含的文件都在 Class body 之前,并且通常在当前文件内容之前?
【问题讨论】:
-
“接受”是什么意思?
-
@NathanPierson 接受我的意思是它已被
foo类和print_bar函数定义明确声明 -
(1) 在类范围内声明 - 没有。在课堂范围内可见 - 是的。通常我会理解“在课堂范围内”是指前者。 (4) 是的,包含通常排在其他所有内容之前。
-
@HolyBlackCat 如果你这么说,那么我的问题可以更好地形成,比如类的可见性范围是什么?
-
这很复杂。通常你可以访问类之上的所有东西,不包括函数局部变量和非友元类的私有变量。模板有时也可以access things below themselves。