Cpp クラス コピーコンストラクタ 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(クラス コピーコンストラクタ)
 
5行: 5行:
 
<tr>
 
<tr>
 
<td style="width:1px;"></td>
 
<td style="width:1px;"></td>
<td class="mbox-text plainlist" style="">本来の表記は「<b><span id="RealTitle" style="font-size:large;">C++ クラス コピーコンストラクタ</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。</td>
+
<td class="mbox-text plainlist" style="">本来の表記は「<b><span id="RealTitle" style="font-size:large;">C++(Cpp) クラス コピーコンストラクタ</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。</td>
 
</tr>
 
</tr>
 
</table>
 
</table>
69行: 69行:
  
 
</syntaxhighlight2>
 
</syntaxhighlight2>
 
+
CopyConstructorMain.cpp
 
<syntaxhighlight2 lang="cpp" line start="1">
 
<syntaxhighlight2 lang="cpp" line start="1">
 
int Look(CCopyConstructor001 objArgCCopyConstructor001){
 
int Look(CCopyConstructor001 objArgCCopyConstructor001){
86行: 86行:
  
  
 コピーコンストラクターがあれば、値渡しになっていたLook関数があっても、同じ実体を指し示すアドレスのコピーが作られ、デストラクタが呼び出されても、main関数で生成したオブジェクトのアドレスそのものではないし、Look関数に渡された引数にぶら下がっている参照変数からのメンバ変数も参照というカタチをとることになるため、Look関数が終わっても、参照型引数としてコピーして作られた方の引数クラスと同じ形式の参照型変数のアドレスやLook関数内で使ったその他のオブジェクトが消滅するだけなので、元々のmainクラスから作られたクラスの先頭アドレスにぶら下がっている実体が残っているため、main関数が終わるときに、きちんとmain関数で生成したクラスが消滅するため、問題が発生しません。そして関数の引数としても問題がなく、より役立つクラスになります。コピーコンストラクタは大事だよ。
+
 コピーコンストラクターがあれば、値渡しになっていたLook関数があっても、同じ実体を指し示すアドレスのコピーが作られ、デストラクタが呼び出されても、main関数で生成したオブジェクトのアドレスそのものではないし、Look関数に渡された引数にぶら下がっている参照変数からのメンバ変数も参照というカタチをとることになるため、Look関数が終わっても、参照型引数としてコピーして作られた方の引数クラスと同じ形式の参照型変数のアドレスやLook関数内で使ったその他のオブジェクトが消滅するだけなので、元々のmainクラスから作られたクラスの先頭アドレスにぶら下がっている実体が残っているため、main関数が終わるときに、きちんとmain関数で生成したクラスが消滅するため、問題が発生しません。そして関数の引数としても問題がなく、より役立つクラスになります。コピーコンストラクタは大事だよ。クラスの中で動的にメモリを確保するような変数があれば、コピーコンストラクタはあった方がいいです。
  
  

2021年2月6日 (土) 00:00時点における最新版



個人用ツール
名前空間

変種
操作
案内
ツールボックス