假设我声明一个新的 C++ 结构体类型:
struct my_struct {
int a;
int b;
};
我可以通过以下方式创建此结构类型的新实例吗:
my_struct foo;
或者
struct my_struct foo;
如果两者都能工作,是否有任何区别?
假设我声明一个新的 C++ 结构体类型:
struct my_struct {
int a;
int b;
};
我可以通过以下方式创建此结构类型的新实例吗:
my_struct foo;
或者
struct my_struct foo;
struct
(或class
)。尽管可以说这种情况确实很少。 - David Rodríguez - dribeasstruct test {}; void test() {} int main() { struct test t; }
如果在main
函数中没有struct
(或class
)关键字,那么标识符test
将指向函数test
而不是类型test
。不可否认的是,将类型和函数命名为相同名称的人存在问题,但在具有命名空间、使用声明、使用指令和参数相关查找[*]的语言中,查找结果并不总是显而易见的。如果存在struct
关键字,则查找将跳过非用户定义类。 - David Rodríguez - dribeas