cとc++structの違い
1251 ワード
これまでstruct構造体にはあまり使われていませんでしたが、最近struceに関する資料を少し見て、CとC++の違いが大きいと感じてみました.
まず一般的なstructの構造を紹介します.
struct構造体名{
.....
}構造体変数名;
ここで、構造体名と構造体変数名の違い.構造体変数名をインスタンスとして直接使用できます.構造体名は、構造体を定義するために使用されます.
例:
C言語にはオブジェクトの概念がないためprivate public protectedの概念はない.structメンバーのデフォルトの使用権限はpublicに似ています.また、メンバー関数がない、メンバー変数のみである.
C++のstructは次のように使用できます.
こうやってstructとclassを比べると、差はそれほど大きくないような気がします.structは虚関数と継承を定義することもできますが、ここで純虚関数を定義するstruct studentはインスタンス化できないようです.抽象類の影響なのか??わかりません.これは問題です.
ここはstructの知識の小さな整理でしょう.
ついでに、小さな知識点を追加します.
stringクラスはC++で定義、#include.Cにはstringはありません
Cではtypedef char*stringを使用できます.stringを使います
まず一般的な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ではtypedef char*stringを使用できます.stringを使います