コピーコンストラクタ

  実装の目的



コピーコンストラクタは、戻り値をオブジェクト型にしたい時に実装します

デフォルトのコピーコンストラクタは、メモリの単純コピーを行なう為、オブジェクトが固有のメモリ
を使用している場合は明示的に実装する必要があります

また、これはオブジェクト同士の演算を行なう場合の一時的な(戻り値としての)オブジェクト作成
にも使用されるので以下のような実装を行なう場合に必要となります

  
MyString a,b;

a = "ABC";
b = a + "XYZ";
  

a + "XYZ" は、operator + で定義できますが、戻り値としてオブジクトを定義する事によって
a の値に影響を与えないで演算を行なう事ができます



  コピーコンストラクタのコード



  
// *********************************************************
// コピーコンストラクタ
// *********************************************************
MyString::MyString( const MyString &obj )
{
	MyString::lpBuff = (LPTSTR)GlobalAlloc(GMEM_FIXED, MAX_PATH);
	lstrcpy( lpBuff, obj.lpBuff );
}
  

引数は、const クラス名 &obj と定義する必要があります




  コピーコンストラクタ実装後の operator +

  
// *********************************************************
// 足し算
// *********************************************************
MyString MyString::operator + ( LPTSTR lpString )
{
	MyString Work;

	lstrcpy( Work.lpBuff, this->lpBuff );
	lstrcat( Work.lpBuff, lpString );

	return Work;
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ