使用::在C++中
所以,在别人叫我用谷歌搜索之前,我已经做了,这就是我来这里的原因 我的问题是— 除了构造函数之外,如何将::用于其他对象 我知道构造函数的正确规则是,它们必须与它们所属的类具有相同的名称。但在这段代码中,它的使用与此无关。有人能告诉我为什么和怎么做吗 编辑:我忘了提到,第一个块是头文件,第二个是指向所述头文件的cpp源 只要在另一个命名对象中找到给定的名称,但包含的对象不是对象,而是类、命名空间或枚举,就会使用::符号使用::在C++中,c++,syntax,C++,Syntax,所以,在别人叫我用谷歌搜索之前,我已经做了,这就是我来这里的原因 我的问题是— 除了构造函数之外,如何将::用于其他对象 我知道构造函数的正确规则是,它们必须与它们所属的类具有相同的名称。但在这段代码中,它的使用与此无关。有人能告诉我为什么和怎么做吗 编辑:我忘了提到,第一个块是头文件,第二个是指向所述头文件的cpp源 只要在另一个命名对象中找到给定的名称,但包含的对象不是对象,而是类、命名空间或枚举,就会使用::符号 namespace n { struct s { e
namespace n {
struct s {
enum e {
q
};
};
}
n::s::e my_value = n::s::e::q;
它是左关联的,因此在本例中,e位于n::s中,q位于n::s::e中。您所说的是范围解析运算符::。它用于描述范围
int a=5; //Global Variable
int main() {
int a=1; //local variable
cout<<a;
cout<<::a; //We are explicitly mentioning that we need the global scope 'a' variable
return 0;
}
输出:
一,
五,
构造函数只是一个方法,您可以创建自己的方法来初始化日期成员。创建对象时,将自动调用与类同名的构造函数
通常,在创建对象时会调用默认构造函数来初始化对象,这是自动的。
然后,您可以显式调用您的方法来为您想要的数据成员设置值
对于您的案例的正确解释,请查看此答案的顶部注释Can::used For the this not constructor?-是的,它可以。构造函数只是一种方法。在您的问题中,所有4种::用法都与构造函数无关。这里甚至没有任何构造函数……您所说的是范围解析运算符。@HolyBlackCat这就是我为什么要问这个问题的原因在给定的示例中,默认构造函数是微不足道的,所以没有调用它。该成员是静态的,因此未创建、初始化或未初始化。这些方法修改一个全局变量。
namespace n {
struct s {
enum e {
q
};
};
}
n::s::e my_value = n::s::e::q;
int a=5; //Global Variable
int main() {
int a=1; //local variable
cout<<a;
cout<<::a; //We are explicitly mentioning that we need the global scope 'a' variable
return 0;
}