C ++ベースのC ++クラスとノート--c構造を学ぶの違い

1.C構造

C言語の構造体は、構造内のデータの様々な異なるタイプを含むことができる、カスタム・データ・タイプです。次の例では、複雑な構造を宣言します。

# include <iostream.h> 
# include <math.h>
struct complex
{ 
	double real;  // 复数的实部
    double imag; // 复数的虚部 
 	void init ( double r, double i) // 给real和imag赋初值 
 	{ 
 		read = r;
 		imag = i; 
 	} 
 	double realcomplex ( ) // 求复数的实部值
  	{ 
  		return real; 
  	} 
    double imagcomplex( ) // 求复数的虚部值
    { 
   		return imag; 
    } 
   double abscomplex( ) // 求复数的绝对值
    { 
    	double t; 
    	t = real *real + imag *imag;
     	return sqrt(t) ;
    } 
} A;

int main( ) 
{
	A .init(1.1, 2.2 ) ; 
	cout<<"real of complex A = "<<A.realcomplex( )<<endl; 
	cout<<"imag of complex A = "<<A.imagcomplex( )<<endl; 
	cout<<"abs of complex A ="<<A.abscomplex ( )<<endl;
	return 0; 
}

:次のようにプログラムの結果は、
  A = 1.1の実複素数
   複素数A = 2.2のIMAG
   コンプレックスA = 2.459675のABSを

実数とIMAG 2倍精度データを含む複合体の構造のこの宣言で、さらに複雑な構造に属する4つの機能を含む、実部と虚複合体の一部の数を表す。)(INITを()、realcomplex、imagcomplex()そしてabscomplex()。INIT()関数の実部とIMAG初期値は、realcomplex()、imagcomplex()とabscomplex()は、3つの関数は、複素数値の実数部と虚数部の絶対値を計算するために使用されます。

2.C ++クラス

データ構造の構造および機能のメンバーは、それぞれのデータメンバと関数メンバと呼ばれます。C ++では、メンバ関数は、通常、メンバ関数と呼ばれますこの構成では、実数およびIMAGは、データメンバに、init()、(realcomplex)であり 、imagcomplex() とabscomplex()メンバ関数は。プライベートメンバー(プライベート)とパブリック(公共)のメンバー:C ++では、構造体のメンバは、通常、2つのカテゴリに分類されます。唯一の構造の他のメンバー、および(データ及び機能を含む)公衆のメンバーによってアクセスすることができる(データおよび機能を含む)のプライベートメンバーは他のメンバーの構造内でアクセスすることができ、外側構造体の他の部分によってアクセスすることができます
例えば、実施例では、唯一の変数が必要にアクセスする構造本物とIMAGメンバー関数であることをことを、プライベートメンバとして宣言することができ、4つのメンバ関数は、パブリックメンバーとして宣言することができ試験管構造で呼び出される必要があります。次のとおりです。

# include <iostream.h> 
# include <math.h> 
class complex
{ 
private : 
	double real; 
	double imag; 
public: 
	void init( double r, double i) 
	{ 
		real = r;
		imag = i; 
	} 
	double realcomplex ( ) 
	{ 
		return real; 
	} 
	double imagcomplex( )
	{ 
		return imag; 
	} 
	double abscomplex( )
 	{
 		double t ; 
 		t = real *real + imag *imag;
  		return sqrt(t) ;
   }
} A; 

int main ( ) 
	{
    	A.init( 1.1, 2.2) ; 
    	cout<<"real of complex A = "<<A.realcomplex( )<<endl;
    	cout<<"image of complex A ="<<A.imagcomplex( )<<endl; 
     	cout<<"abs of complex A ="<<A.bscomplex( )<<endl;
      	return 0 ; 
     }

図から分かるように、構造及び機能が実質的に同じクラスです。C ++では、なぜ使用クラスの代わりの構造?その理由は、デフォルト(デフォルト)の場合には、クラスメンバーがプライベートで、クラスはデフォルトのセキュリティを提供し、ということですデータオブジェクト指向の考え方に隠された基準と一致し、この規定。より良い平均ローカル変数よりも保護されていたクラスのメンバーを非表示にするデータ。

説明:

秘密鍵と公開鍵で声明(1)クラスは、2 倍の任意の順序で表示されることがありますプライベートおよびパブリックメンバーのすべてのメンバーが一緒に分類されている場合には、プログラムがより明確になります。指定プライベートを使用するユーザー忘れる一度ので、デフォルトはプライベートなので、私たちは、保護されたユーザーのデータが残っを可能になる、、、公共メンバー習慣の前にすべてのプライベートメンバーを開発する必要があります。

別の保護されたキーワードを説明すると、(2)秘密鍵と公開に加えて、クラスのメンバーであってもよいです。保護部材は保護部材を説明するように、外部関数で使用することができない、それは他の方法で使用されてもよい知られているそのような友人の関数として、。

(3)データ・メンバーは、任意のデータ型であることができるが、レジスタ(オート)自動(登録)または外部(EXTERN)を使用していない説明します。

(4)クラス宣言の初期値データメンバにない、たとえば、次の

class abc
{ 
private : 
	char a ='q'; 	// 错误
 	int b = 33; 	// 错误 
 public: 
 	... 
 } ;

C ++は、クラスオブジェクト定義の後に初期値にのみデータメンバを提供します

公開された31元の記事 ウォンの賞賛0 ビュー1265

おすすめ

転載: blog.csdn.net/qq_40754866/article/details/104550108