列をなして
//インライン関数を宣言し、実装し、それは同じファイルである必要がありますすることができます
//インライン関数は、ヘッダファイルと実装ファイルに分けることができません
追加インラインint型(Xはint、int型Y)
{//通常ループ置かないでください
リターンX + Yを;
}
//それは、カスタムクラス型である場合は、最初の文字を大文字にしなければならない
クラスのコンピュータ
{
公共の://パブリックメンバは、クラスの外にアクセスすることができ
、外部インターフェース、機能、サービスとして知られているクラスの//パブリックメンバー
こぶを使用して//メンバ関数モードという名前
のボイドsetBrand(のconst char型*ブランド)
{
strcpyの(_brand、ブランド);
}
空setPrice(ダブル価格)
{
_price =価格。
}
//保護://保護されたメンバーは、クラス外部からアクセスすることができない
ボイドプリント()
{
COUT << "ブランド" << ENDL << _brand
<< "価格" << ENDL << _price;
}
クラスの底部にできるだけ//プライベートメンバー
プライベート://プライベートメンバーはクラス外でアクセスすることができない
チャー_brand [20]; // brand_ / m_brand
ダブル_price;
};
クラスの宣言と定義
//クラスの宣言
クラスのコンピュータ
{
//デフォルトのアクセスのクラスがプライベートで
公共:
無効setBrand(のconstのchar *ブランド);
空setPrice(ダブル価格)。
無効印刷();
//プライベートプロパティを通じてキーワードパフォーマンスパッケージ
プライベート:メンバーに関連するデータのみによって占め//クラスオブジェクト空間、
プログラム・コードおよび空間オブジェクト//メンバ関数のストレージを占有しません
チャー_brand [20]。
ダブル_price;
}。
//クラスの実装
ボイドコンピューター:: setBrand(のconstのchar *ブランド)
{
strcpyの(_brand、ブランド);
}
空コンピューター:: setPrice(ダブル価格)
{
_price =価格。
}
空コンピューター::プリント()
{
coutの<< "ブランド:" << _brand <<てendl
<< "価格:" << _price <<てendl;
}
コンストラクタデストラクタ
クラスコンピューター
{
パブリック:
コンピュータ(のconstのchar *ブランド、ダブル価格)
:_brand(新しいのchar [strlenを(ブランド)+ 1]())//浅拷贝、只传地址
、_price(価格)
{
strcpyの(_brand、ブランド);
裁判所未満<< "コンピュータ(のconst char型*、ダブル)" <<てendl;
}
無効印刷()
{
coutの<< "ブランド:" << _brand <<てendl
<< "価格:" << _price <<てendl;
}
自動的にデストラクタコールするプロセスオブジェクトで破壊//
の@
@を:デストラクタオブジェクトの実装が破壊される
0 #IF
ボイドリリース()
{
[]削除_brand;
}
#endifの
コンピュータ〜()
{ //デストラクタ関数:オブジェクトがリソース要求を再利用することである
(_brandが){IF
削除[] _brand;
_brand = nullptr A; // NULL
}
COUT << "コンピュータ〜()" << ENDL;
}
プライベート:
CHAR * _brand。
ダブル_price;
}。
//コンピュータPC2( "小米科技"、7500);
int型TEST0(無効)
{
{
コンピュータPC1( "MateBook"、6666);
裁判所未満<< ">> PC1:" <<てendl;
pc1.print();
}
裁判所未満<< ">> PC2:" <<てendl;
// pc2.print();
破壊//ヒープ領域のオブジェクトは、手動で実行する必要がある
* =新しい新PC3コンピュータ(の"ThinkPad"、7777)コンピュータ;
coutの<< ">> PC3:" <<てendl;
PC3->印刷();
PC3を削除; //実行中に、忘れてはいけない表現を削除し、それがデストラクタを呼び出します。
静的なコンピュータPC4( "MacBook Proの"、20000);
裁判所未満<< ">> PC4:" <<てendl;
pc4.print();
0を返します。
}
test1のボイド()
{
コンピュータ・コンピュータPC3新新=( "ThinkPadの"、7777);
COUT << ">> PC3:" <<てendl;
PC3->印刷();
PC3->〜コンピュータ(); //このステートメントが実行された後、オブジェクトはで破壊されていない
削除PC3;
}
TEST2ボイド()
{
コンピュータPC1( "MateBook"、6666);
COUT << ">> PC1:" <<てendl;
pc1.print();
PC1〜コンピュータ(); //デストラクタアクティブコール。しかし、これはお勧めできません
//デストラクタが自動的に実行させるべきである
。//pc1.releaseを()
}
コピーコンストラクタ
クラスコンピューター
{
パブリック:
コンピュータ(のconstのchar *ブランド、ダブル価格)
:_brand(新しいのchar [strlenを(ブランド)+ 1]())
、_price(価格)
{
strcpyの(_brand、ブランド);
裁判所未満<< "コンピュータ(のconst char型*、ダブル)" <<てendl;
}
//システムがニーズを満たしていない提供して
0の#if
コンピュータ(のconstコンピュータ&RHS)
:_brand(rhs._brand)//シャローコピー、唯一の転送アドレス
、_price(rhs._price)
{
COUT <<「コンピュータ(のconst&コンピュータ)「<< ENDL;
}
#endifの
コンピュータ(CONSTコンピュータ&RHS)
:_brand(新しい新しいCHAR [strlenを(rhs._brand)。+ 1]())
、_price(rhs._price)
{
strcpyの(_brand、rhs._brand) ;
COUT << "コンピュータ(コンピュータのconst&)" <<てendl;
}
ボイドプリント()
{
のprintf( "ブランド=%Pを\ n"、_brand)。
裁判所未満<< "ブランド:" << _brand <<てendl
<< "価格:" << _price <<てendl;
}
〜コンピュータ()
{
delete []を_brand。
裁判所未満<< "〜コンピュータ()" <<てendl;
}
プライベート:
CHAR * _brand。
ダブル_price;
}。
空TEST0()
{
コンピュータPC1( "MateBook"、6666);
裁判所未満<< ">> PC1:" <<てendl;
pc1.print();
//新しいオブジェクトがすでに別の存在でのオブジェクトの初期化
、コンピュータPC1 PC2 =
<<てendl;:COUT << ">> PC2"
pc2.print()を;
}