cとc++structの違い

1251 ワード

これまでstruct構造体にはあまり使われていませんでしたが、最近struceに関する資料を少し見て、CとC++の違いが大きいと感じてみました.
まず一般的なstructの構造を紹介します.
struct構造体名{
.....
}構造体変数名;
ここで、構造体名と構造体変数名の違い.構造体変数名をインスタンスとして直接使用できます.構造体名は、構造体を定義するために使用されます.
例:
struct student {
    char* name;
 //    int num;
} stu1,stu2;
int main()
{
 struct student  stu;
 stu.name; //      
 stu1.name; //    
 return 0;
} 

C言語にはオブジェクトの概念がないためprivate public protectedの概念はない.structメンバーのデフォルトの使用権限はpublicに似ています.また、メンバー関数がない、メンバー変数のみである.
C++のstructは次のように使用できます.
#include <iostream>
using std::cout;
using std::endl;  
struct school
  {
protected: 
  //  virtual  void iname() const =0;
   virtual  void iname() const{}//                    
};
 struct student :public school
{
       void iname(){
       cout<<"i named virtual!"<<endl;}
}stu1;

int main(){
     stu1.iname();
     return 0;
}

こうやってstructとclassを比べると、差はそれほど大きくないような気がします.structは虚関数と継承を定義することもできますが、ここで純虚関数を定義するstruct studentはインスタンス化できないようです.抽象類の影響なのか??わかりません.これは問題です.
ここはstructの知識の小さな整理でしょう. 
ついでに、小さな知識点を追加します.
stringクラスはC++で定義、#include.Cにはstringはありません
Cではtypedef char*stringを使用できます.stringを使います