今天,我很想在 C++ 中找到结构和类之间的一些区别。所以,我发现了一些不同之处:
- 在结构中,默认情况下成员是公共的,而在类中是私有的。
- 默认情况下,结构的继承是公共的,而在类的情况下是私有的。
- 类可以参与模板,而结构不能。
单击此处查看在模板的情况下不能使用结构代替类。http://ideone.com/p5G57
template<struct T> void fun(T i)
{
cout<<i<<endl;
}
int main()
{
int i=10;
fun<int>(i);
return 0;
}
它给出了错误:
prog.cpp:4: error: ‘struct T’ is not a valid type for a template constant parameter
prog.cpp: In function ‘void fun(T)’:
prog.cpp:4: error: ‘i’ has incomplete type
prog.cpp:4: error: forward declaration of ‘struct T’
prog.cpp: In function ‘int main()’:
prog.cpp:12: error: no matching function for call to ‘fun(int&)’
但是,如果将struct替换为class,则效果很好。见这里:http: //ideone.com/K8bFn
除了上述这些差异之外,当我在代码中替换class
为时struct
,代码可以完美运行而无需进行任何进一步的更改。
现在,我想知道,还有更多的差异,我错过了,我应该知道吗?