C++のStructureとClassの違いとは?

スポンサーリンク
スポンサーリンク


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は参照型データ型であることです。

タイトルとURLをコピーしました