是否有特别好的理由选择使用精心设计的类型说明符?例如,在某些情况下,需要使用template
或typename
关键字来消除依赖关系template
或类型的歧义.
但我想不出任何例子,如枚举这样的事情.请使用以下代码示例:
enum Foo { A, B };
void bar(Foo foo);
void baz(enum Foo foo);
Run Code Online (Sandbox Code Playgroud)
为什么我可以选择使用baz()
提供的语法bar()
(反之亦然)?有什么含糊不清的案子吗?
没有理由使用这样的说明符,除非您正在处理名称被不同"种类"的名称隐藏的情况.例如,声明一个以Foo
枚举声明命名的变量是完全合法的,因为,非正式地说,对象名称和类型名称存在于独立的"命名空间"中(更多正式规范见3.3/4)
enum Foo { A, B };
int Foo;
Run Code Online (Sandbox Code Playgroud)
在之后int Foo
的声明,你的bar
声明将会无效,而更详细的baz
声明仍然有效.
归档时间: |
|
查看次数: |
3530 次 |
最近记录: |