変換コンストラクタ

引数が1つのコンストラクタは、'='を使った初期化のようにその引数を渡してオブジェクトを作成できる・・・。
引数をそのオブジェクトに変換される過程をコンストラクタに定義するので、型変換コンストラクタとか、変換コンストラクタという・・・。
(ユーザ定義変換は、そのオブジェクトから別の型への変換であった・・・。変換コンストラクタは、別の型からオブジェクトへの変換なので逆・・・。)

int型変数とchar型ポインタをメンバに持つclass_base・・・。
int型を引数とするコンストラクタ、const char *型を引数とするコンストラクタ、どちらも型変換コンストラクタである・・・。

引数iをi_にセット・・・。

引数ptrをptr_にコピー・・・。

デストラクタでptr_を解放、i_を0に・・・。showでそれぞれ出力・・・。

obj1, obj2は、1つの整数値や文字列の引数を引数形式で渡している・・・。
それに対して、obj3, obj4は、1つの整数値や文字列の引数を'='で初期化のように渡している・・・。
このようなことが変換コンストラクタではできるのである・・・。

出力してみる・・・。

$ g++ -o converting_constructor base.cpp converting_constructor.cpp
$ ./converting_constructor
i_ = 10

ptr_ = ABCDE
i_ = 0

i_ = 20

ptr_ = XYZ
i_ = 0
$ 

obj3, obj4でもちゃんとセットされてる・・・。

Sample/cpp/converting_constructor/converting_constructor/src/converting_constructor at master · bg1bgst333/Sample · GitHub