回答編集履歴

4

削除したかった

2018/12/11 18:48

投稿

myoon
myoon

スコア100

test CHANGED
@@ -8,4 +8,4 @@
8
8
 
9
9
 
10
10
 
11
- !!x ではなく X != false がよい書き方ですね。
11
+ !!x ではなく x != 0 がよい書き方ですね。xがbool型なら x != false 、xがポインタ型なら x != nullptr でしょうが。

3

削除したかった

2018/12/11 18:48

投稿

myoon
myoon

スコア100

test CHANGED
@@ -1,3 +1,11 @@
1
1
  C++はよく知らないのでこんな難しい議論を完全に理解はできないですが。
2
2
 
3
3
  C言語では、私は(値が0,1のどちらかとは限らない)変数xをブール値に返還するとき !!x と書いたことが多かったです(整数型やポインタ型に対して)が、C++ではせっかくboolが使えるのに、コンパイラは「「!」がオーバーロードされているかもしれない」と最適化してくれなさそうなところが気がかりです。
4
+
5
+
6
+
7
+ 削除したかったのですが、削除できない仕様だそうなので。
8
+
9
+
10
+
11
+ !!x ではなく X != false がよい書き方ですね。

2

余計なコメントを削除しました。

2018/12/11 18:36

投稿

myoon
myoon

スコア100

test CHANGED
@@ -1,13 +1,3 @@
1
1
  C++はよく知らないのでこんな難しい議論を完全に理解はできないですが。
2
2
 
3
3
  C言語では、私は(値が0,1のどちらかとは限らない)変数xをブール値に返還するとき !!x と書いたことが多かったです(整数型やポインタ型に対して)が、C++ではせっかくboolが使えるのに、コンパイラは「「!」がオーバーロードされているかもしれない」と最適化してくれなさそうなところが気がかりです。
4
-
5
-
6
-
7
- クラスAの代入演算子のオーバーロードをやった後、別のオーバーロードとして
8
-
9
- const A& operator=( const A& a ) const;
10
-
11
- てのが作れる、と知ったときは驚きました。
12
-
13
- 「代入」というイメージを壊してはいけないので、 thisで初期化される A * const pseudothis というメンバを作って *pseudothis に代入する処理を書けば何とかなります。

1

誤字訂正+追記

2018/12/04 14:23

投稿

myoon
myoon

スコア100

test CHANGED
@@ -6,6 +6,8 @@
6
6
 
7
7
  クラスAの代入演算子のオーバーロードをやった後、別のオーバーロードとして
8
8
 
9
- A& operator=( const A& a ) const;
9
+ const A& operator=( const A& a ) const;
10
10
 
11
- てのが作れる、と知ったときは驚きました。
11
+ てのが作れる、と知ったときは驚きました。
12
+
13
+ 「代入」というイメージを壊してはいけないので、 thisで初期化される A * const pseudothis というメンバを作って *pseudothis に代入する処理を書けば何とかなります。