teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

間違いの修正

2016/03/08 17:32

投稿

退会済みユーザー
answer CHANGED
@@ -1,5 +1,7 @@
1
1
  1.全く同じものです。
2
2
 
3
- .直接初期化はデフォルトコンストラクタが実行されます。コピー初期化は未初期化変数に同じ型(クラス)値(オブジェクト)が代入れた時にコピーコンストラクタが実行されます。コピーコンストラクタが定義されいない場合デフォルトコピーコンストラクタが呼び出され,参照コピーが起きてしまう原因になったりします。
3
+ 項目をraccyんの結果をみ修正しました。僕の理解も浅かったよで申し訳ったす。
4
4
 
5
+ 2.raccyさんの言う通りコンストラクタの引数の指定の仕方に名称がついているだけで,実態は全て同じもののようです。指定した引数に当てはまるコンストラクタの呼び出しを行うという話で,コピーコンストラクタ等の話は関係ありませんでした。(なので=演算子の対象が{}型(void型) ,CBass& 型で呼び出されるコンストラクタが変わってるのは納得できると思います。)
6
+
5
7
  3. 代入している値がCBaseクラス型じゃないからだと思います。検証したい場合はそれぞれのコンストラクターで標準出力で文字列などを出力してみるといいと思います。

1

間違い修正

2016/03/08 17:32

投稿

退会済みユーザー
answer CHANGED
@@ -1,5 +1,5 @@
1
1
  1.全く同じものです。
2
2
 
3
- 2.直接初期化はデフォルトコンストラクタが値渡しで実行されます。コピー初期化は未初期化変数に同じ型(クラス)の値(オブジェクト)が代入された時にコピーコンストラクタが実行されます。コピーコンストラクタが定義されていない場合デフォルトコピーコンストラクタが呼び出され,参照コピーが起きてしまう原因になったりします。
3
+ 2.直接初期化はデフォルトコンストラクタが実行されます。コピー初期化は未初期化変数に同じ型(クラス)の値(オブジェクト)が代入された時にコピーコンストラクタが実行されます。コピーコンストラクタが定義されていない場合デフォルトコピーコンストラクタが呼び出され,参照コピーが起きてしまう原因になったりします。
4
4
 
5
5
  3. 代入している値がCBaseクラス型じゃないからだと思います。検証したい場合はそれぞれのコンストラクターで標準出力で文字列などを出力してみるといいと思います。