今日は、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
、コードはそれ以上変更しなくても完全に機能します。
今、知りたいのですが、私が見逃していて知っておくべき違いは他にありますか?