第15講 クラスの学習その2
第6話 意味不明なp(p x)の解説
ここでは様々なコンストラクタをオーバーロードして、活用を考えたいと思いますが、
その前に前話の最後の問に答えておきましょう。
意味不明なp(p x)の解説です。
次のように色をつけてみると、皆目見当のつかなかったp(p x)の意味が少し見えるのではないでしょうか。
p(p x)
pはクラスpのコンストラクタです。
つまり、クラスpから、引数付きでインスタンスを発生させるときに初期化を行うメソッドです。
その引数がxというわけです。
p xpは引数xpから作られるインスタンスであることを示しています。
これは、前話の注釈文に書いてありましたが、
int x
と同様に理解すればよいのです。
intはxを修飾しています。
xはint型であると修飾しているわけです。
p x もxが、クラスp型のインスタンスであるというわけです。
ここで、前話の呪文
『コピーコンストラクタは、自分自身の型を引数として受け取り自身の新たなインスタンスを返すコンストラクタです。』
『同じクラスのインスタンスを受け取りそのフィールドの値を新しいインスタンスにコピーするコンストラクタをコピーコンストラクタと呼ぶ。』
を思い返してください。
自分自身の型を引数として受け取りとは、
クラスp型ですでに発生させたインスタンスを引数とするという意味です。
そして自身の新たなインスタンスを返すコンストラクタですとは、
p型ですでに発生させたインスタンスとまったく同じ内容のインスタンスを発生させるという意味です。
つまり、すでに作られているインスタンスの内容を新たに作られるインスタンスにコピーしてから、
インスタンスを生み出しなさいという意味なのです。
前に設計書から作り出した車とまったく同じ車を作りなさいということです。
設計書が同じでも、車体の色など細かいところは異なる車が車を作ることができますが、
車体の色なども含めて同じものを作りなさいということです。
p p2=new p(p1);
p1が設計書pから以前に作ってくるまであり、p2はこれから新たに作り出そうとしている車ですが、
p2をp1とまったく同じ車として発生させなさいです。
newとは、新たにインスタンスを発生させることです。
言い換えると、設計書から車を作り出すことです。

呪文
『コピーコンストラクタは、自分自身の型を引数として受け取り自身の新たなインスタンスを返すコンストラクタです。』
の意味も
p p2=new p(p1);
の意味も今となっては明瞭ではないでしょうか。

残る呪文
同じクラスのインスタンスを受け取りそのフィールドの値を新しいインスタンスにコピーするコンストラクタをコピーコンストラクタと呼ぶ。』
も解読してみましょう。
同じクラスのインスタンスを受け取りは、すでに設計書pに基づいて生産した車(p1)を受け取る、という意味です。
そのフィールドの値を新しいインスタンスにコピーするは、p1の内容(車体の色など)をこれから作り出す車p2にコピーしなさいです。

どうです。おそらく、何回読んでも頭に入ってこなかった呪文が、実は簡単にしてシンプルなことをいっていることがお分かりではないでしょうか。
今回は書籍は読んでいませんが、
今までの経験からいうと、書籍も入門者にとっては意味不明の呪文の連続であろうと推測できます。

私のvc++入門講義は、
2012/08/11現在Googleで『vc++ 入門』『vc++ 初心者』『vc++ 基礎』『vc++ 初歩』『はじめての vc++』『vc++ 講義』
『vc 入門』『vc 初心者』『vc 基礎』『vc 初歩』『はじめての vc』『vc 講義』『c++ 初心者』『c++ 初歩』『c++ 応用』『c++ 講義』
『visual c++ 入門』『visual c++ 初心者』『visual c++ 基礎』『visual c++ 初歩』『visual c++ 応用』『visual c++ 講義』
のすべてにおいてトップにランクされています。
そして、後発のvb・vba入門講義も、『vba 2010 入門』などにおいてすでにトップの位置にありますし、
いろいろな2語検索でも、トップに迫る勢いを示しています。
このことは、いかに初心者・入門者が意味不明の呪文に悩まされ続けてきたのかを如実に語っているといってよいでしょう。
この始めたばかりのJava入門講義も、トップを独占する日は近いと思っています。
どうか、末永いお付き合いをお願いします。

次話は、staticの意味について説明します。



第5話へ 第7話へ

戻る

VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座

初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第2部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第3部