在 C++ 中声明类指针变量时,何时以及为什么要使用“struct”关键字?
我在嵌入式环境中看到过这种情况,所以我怀疑这是 C 的某种保留。我已经看到很多关于在声明与以下内容相关的结构对象时何时使用“struct”关键字的解释C 中的命名空间(here),但我找不到任何人谈论为什么在声明类指针变量时可能会使用它。
例如,在 CFoo.h 中:
class CFoo
{
public:
int doStuff();
};
inline Foo::doStuff()
{
return 7;
}
然后在不同的类(class):
void CBar::interesting()
{
struct CFoo *pCFoo;
// Go on to do something interesting with pCFoo...
}
最佳答案
很少有这样做的理由:它是 C 的失败,在这种情况下,程序员只是多愁善感——也许是为了提高可读性。也就是说,它可以用来代替前向声明。
在某些情况下,您可能需要消除歧义,但此处并非如此。一个需要消除歧义的例子是
class foo{};
int main()
{
int foo;
class foo* pf1;
struct foo* pf2;
}
请注意,您可以互换使用class
和struct
。您也可以使用 typename
,这在使用模板时非常重要。以下是有效的 C++:
class foo{};
int main()
{
class foo* pf1;
struct foo* pf2;
typename foo* pf3;
}
关于c++ - 为什么在 C++ 类指针声明中使用 'struct' 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57592945/