Сегодня мне было любопытно найти некоторые различия между структурой и классом на С++. Итак, я нашел некоторые отличия:
- В структуре члены по умолчанию являются общедоступными, а private - в классе.
- Наследование в случае структуры является общедоступным по умолчанию, а private в случае класса.
- Классы могут принимать участие в шаблонах, а структуры не могут.
нажмите здесь, чтобы увидеть, что struct не может использоваться вместо класса в случае шаблона. 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 заменяется классом, он отлично работает. см. здесь: http://ideone.com/K8bFn
Помимо этих выше различий, когда я заменяю class
на struct
в моем коде, код работает отлично, не внося никаких дальнейших изменений.
Теперь, я хочу знать, Есть ли больше различий, которые мне не хватает, и я должен знать?