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