#include <iostream>
using namespace std;
class Sample{
public:
enum{ x = 10 };
};
int main(){
cout<<Sample::x<<endl;
return 0;
}
为什么在类中的枚举是可以使用范围解析运算符在主函数中访问?为什么使用范围解析运算符可以访问enum?
#include <iostream>
using namespace std;
class Sample{
public:
enum{ x = 10 };
};
int main(){
cout<<Sample::x<<endl;
return 0;
}
为什么在类中的枚举是可以使用范围解析运算符在主函数中访问?为什么使用范围解析运算符可以访问enum?
我假设你问你为什么不必实例化一个Sample
来访问x
。原因是enum
s就像typedef
s:他们创建一个新类型,他们不创建一个变量。您可以像访问typedef
或类中的struct
/class
声明一样访问Sample::x
。
谢谢!是的,我的怀疑正是你所说的。但抱歉,我不理解这一行:“您可以像访问类中的typedef或struct/class声明一样访问Sample :: x。” – niting112 2012-02-26 03:32:10
@ niting112例如,如果你做'struct A {struct B {}; };'你可以做'A :: B b;' – 2012-02-26 04:07:26
因为enum
定义在public
区域。评论public
关键字,你将无法访问它。您在公共/非公共区域申报的typedef
也一样。
因为enum
S IN CPP具有默认内部链接即它们是由私人如果您在struct or class
申报。因此,您必须使用::
(范围分辨率运算符)来访问枚举(枚举常量)。
在C语言中,你可以访问统计员直接,因为他们是在默认情况下全球。
因为这就是定义C++语言的方式。 – 2012-02-26 03:18:17
@GregHewgill ok ..哪些其他数据类型有效? – niting112 2012-02-26 03:20:04
@ niting112所有其他数据类型和typedefs – 2012-02-26 03:22:47