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

質問編集履歴

2

修正

2021/01/27 04:31

投稿

Watching
Watching

スコア56

title CHANGED
File without changes
body CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  ```
28
28
 
29
- 奇妙なことに、intからCard型への型変換定義していないにも関わらず、intからCard型へのキャストができてしまっています。デバッグしてみると、(Card)i は Card(i) と同じように扱われています。さらには、暗黙的な型変換さえ行えてしまいます。
29
+ 奇妙なことに、intからCard型への型変換定義していないにも関わらず、intからCard型へのキャストができてしまっています。デバッグしてみると、(Card)i は Card(i) と同じように扱われています。さらには、暗黙的な型変換さえ行えてしまいます。
30
30
  なぜこのような挙動が起きるのでしょうか。そう定義されているのですか?
31
31
 
32
32
  このような挙動には問題があるように思えます。ユーザーが作成したクラスへの意図しないキャストが行われる可能性があり、バグの温床になるのではないでしょうか。

1

includeが無かった

2021/01/27 04:31

投稿

Watching
Watching

スコア56

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,8 @@
1
1
  トランプに関連するクラスを自作している時、奇妙に思える挙動に巡り合いました。
2
2
  ```c++
3
+ #include <iostream>
4
+ #include <string>
5
+
3
6
  class Card {
4
7
  private:
5
8
  int suit;
@@ -12,7 +15,7 @@
12
15
  static Card numtocard(int i) { return Card(i - 1); }
13
16
  };
14
17
 
15
- func(Card card){};
18
+ void func(Card card){};
16
19
 
17
20
  int main(){
18
21
  int i = 4;