C++におけるStructureとClassの主な違いは、Structureが値型データ型であるのに対して、Classは参照型データ型であることです。
構造体とクラスは、C++における2つのプログラミング概念です。
C++は、多くの高度な機能から構成されているため、C言語のスーパーセットである高水準の汎用プログラミング言語です。
データには、主に値型と参照型と呼ばれる2つの型があります。
値型は、変数に直接値を代入する。
参照型データでは、変数に実際のデータは格納されません。
参照型データでは、変数に実際のデータは格納されず、その特定のデータへの参照が格納される。
C++における構造体とは
構造体とは、複数のデータ型を保持できる1つの変数のことです。
つまり、複数のデータ型の変数で構成されています。
それらをすべて参照するために、一つの名前が使われます。
さらに、プログラマがmainメソッドで使用できるように、構造体の宣言が必要です。
mainメソッドで構造体のインスタンスを生成し、それを使って必要なタスクを実行することができます。
構造体を用いたプログラムの例を以下に示します。
図1:構造体付きC++プログラム
上の図に示すように,Bookという構造体がある.タイトル、著者、ページという3つのプロパティを持っています。
mainメソッドでは、bという構造体型の変数があり、strcpyという関数でtitleとauthorのプロパティに文字列をコピーすることができる。
プログラマはアクセス演算子(.)を使って構造体のプロパティにアクセスすることができる。
同様に、title、author、pagesに値を割り当てることができる。
最後に、cout文はそれらをコンソールに表示する。
C++のクラスとは
C++の主な利点の1つは、OOPをサポートしていることです。
OOPでは、すべてがオブジェクトになります。
プログラマは、オブジェクトを作成するためにクラスを作成する必要があります。
クラスは、属性とメソッドから構成されています。
属性は特性を記述し、メソッドは動作を記述する。
このクラスの属性とメソッドをクラスのメンバと呼びます。
クラスのメンバはアクセス指定子を持つことができる。
アクセス指定子には、主にpublic、private、protectedの3つがあります。
publicは、他のすべてのクラスから見えるメンバーです。
privateはそのクラス内でのみアクセス可能で、protectedはそのパッケージとそのサブクラス内でのみアクセス可能です。
クラスを使ったプログラム例を以下に示します。
図2: クラスを含むC++プログラム
上の図に示すように、Bookというクラスがあります。
このクラスは、タイトル、著者、ページという3つのパブリックプロパティを持っています。
mainメソッドでは、Book bがBook型であることを宣言しています。
プログラマはアクセス演算子(.)を使ってtitle, author, pagesに値を代入することができます。
最後に、cout文がこれらの値をコンソールに表示する。
C++における構造とクラスの違い
定義
C++の構造体は、様々なデータ型に属する関連データを保持できる値データ型であるのに対し、C++のクラスは、オブジェクトを作成するためのデータとメソッドを定義した設計図です。
これが、C++における構造体とクラスの根本的な違いです。
継承
さらに、C++のStructureとClassの大きな違いとして、継承があります。
C++の構造体は他のクラスや構造体を継承できないのに対して、C++のクラスは他のクラスや構造体を継承することができます。
インスタンス
C++の構造体のインスタンスは構造体変数であり、C++のクラスのインスタンスはオブジェクトです。
したがって、この点もC++のStructureとClassの違いと言えます。
キーワード
また、構造体を定義するキーワードは “struct”、クラスを定義するキーワードは “class “です。
デフォルトのアクセス指定子
また、デフォルトのアクセス指定子も、C++のStructureとClassの違いの一つです。
構造体では、アクセス指定子が宣言されていない場合、メンバーやプロパティはpublicです。
しかし、クラスでは、アクセス指定子が宣言されていない場合、メンバはプライベートになります。
結論
変数とは、値を保持することができるメモリ上の位置のことです。
複数のデータ型を1つの単位として格納することが必要である。
複数のデータ型を1つの単位として格納できるプログラミング機能として、構造体とクラスがあります。
C++におけるStructureとClassの主な違いは、Structureが値型データ型であるのに対して、Classは参照型データ型であることです。