【初心者歓迎】C/C++室 Ver.54【環境依存OK】at TECH
【初心者歓迎】C/C++室 Ver.54【環境依存OK】 - 暇つぶし2ch88:デフォルトの名無しさん
08/05/17 14:57:06
>>87
それを忘れないようにするためって話じゃないのか?w

89:デフォルトの名無しさん
08/05/17 15:02:42
>>88
忘れにくさという点で、
>>78より>83
それより>>87
と良くなっているように見えるけど。

90:デフォルトの名無しさん
08/05/17 15:10:27
コピペ煽りに律儀に答えなくても

91:デフォルトの名無しさん
08/05/17 15:42:28
class NewClass : public Object
の : public Objectを書かなかったらやっぱりバグるわけだしなー
それじゃ意味ないだろう

継承しなければコンパイルエラーになるようにできるなら、別だが。

92:デフォルトの名無しさん
08/05/17 16:13:22
なんでループしてんの?

93:デフォルトの名無しさん
08/05/17 16:19:14
struct Object{virtual ~Object(){};};
#define STD_STRUCT(NAME) struct NAME : public virtual Object
#define STD_CLASS(NAME) class NAME : public virtual Object

STD_CLASS(ClassA) {
public:
  ~ClassA(){std::cout << "~ClassA" << std::endl;}
};

STD_CLASS(ClassB), public ClassA {
public:
  ~ClassB(){std::cout << "~ClassB" << std::endl;}
};

void f()
{
  ClassA* p = new ClassB();
  delete p;
}

94:デフォルトの名無しさん
08/05/17 16:27:10
そしてそのマクロを使うのをつい忘れるわけですね、わかります

95:デフォルトの名無しさん
08/05/17 16:30:03
>>94

>>89

5レス前すら読めない人はこのスレに必要ありませんよ

96:デフォルトの名無しさん
08/05/17 16:31:46
いや、お前ら質問者の意図無視しすぎだろw

97:デフォルトの名無しさん
08/05/17 16:33:46
ツールでなんとかしたいと言ってる人間に、忘れないようにマクロを使いましょうってどんな返事なんだ
俺は必要としたことないから知らんが、書式チェックツールくらいないのか?

98:デフォルトの名無しさん
08/05/17 16:36:19
virtual忘れをチェックしてくれるツールくらい自分作ればいいんじゃね
デストラクタは先頭に ~ が付いててわかりやすいから、
その前にvirtualが付いてるかどうかくらい簡単に判定できそう
そもそもデストラクタを書いてない場合は役に立たないが・・・

99:デフォルトの名無しさん
08/05/17 16:38:42
>>96
>>78を読む限り、まずミスを無くしたい、という目的があって、
その方法として警告、チェックツール「など」、
と手段の例を挙げているので、
同じく、ミスを無くす/減らす方法を書いてるレスが
意図を無視してるようには見えないけど?

100:デフォルトの名無しさん
08/05/17 17:06:19
とりあえず、抽象型へのアップキャストは極力控えて、
総称型プログラミングを覚えた方がいいと思った。

101:デフォルトの名無しさん
08/05/17 17:08:30
>>100
実行時ポリモーフィズムが必要な場合はどうするの。

102:デフォルトの名無しさん
08/05/17 17:10:55
だから極力控えて、って・・・。

103:デフォルトの名無しさん
08/05/17 17:31:36
静的な方が安全というのは分かるが、
export のない C++ でジェネリックばっかやってると
コンパイルが重くて現実的じゃない事も。

104:デフォルトの名無しさん
08/05/17 21:16:08
>>98
そしてそのツールでチェックするのをつい忘れるわけですね、わかります。

105:デフォルトの名無しさん
08/05/17 22:34:11
>>104
make使うならMakefileに組み込めばおk。
総合環境なら・・・ カスタムビルドステップ?

106:デフォルトの名無しさん
08/05/17 22:42:35
>>104
最悪、考え方としてはおかしくなったときにチェックすればいいわけだし。

107:デフォルトの名無しさん
08/05/17 23:08:54
あれ?ちょっとずれるが
なんかの統合環境で、virtualな関数をオーバーライドする時にvirtualつけておかないとワーニング出すって設定できたよな?
これはvirtualですよー、わかってますかー?って意味合いで


108:デフォルトの名無しさん
08/05/18 00:36:52
微妙に宣言間違えて、いつの間にか別の仮想関数が作られちゃうのを防ぐ方法ってないかな。
delphiならviryualで新しく作って、overrideでオーバーライドするから間違えたらエラーになるんだがなぁ


109:デフォルトの名無しさん
08/05/18 00:37:37
virtualだな


110:デフォルトの名無しさん
08/05/18 00:41:27
override は最近の言語によく取り入れられているね。
あれはいい仕様だと思う。

111:デフォルトの名無しさん
08/05/18 01:18:54
>>107
それは余計なお世話な気もするな。コーディング規約レベルだと思う。

112:デフォルトの名無しさん
08/05/18 01:25:16
いんや。
仮想関数じゃないつもりで関数追加して泣きを見るのを防止できる。

113:デフォルトの名無しさん
08/05/18 09:07:18
なんにしろON/OFFできりゃいいんだよな
overrideはいい仕様だ

114:デフォルトの名無しさん
08/05/18 11:38:49
Java みたいに問答無用で仮想関数にする言語は
typo で泣くことになる。

115:デフォルトの名無しさん
08/05/18 11:52:39
そうした事もあって、C#では明示的にoverrideする必要になりましたとさ

116:デフォルトの名無しさん
08/05/18 12:19:28
それにならって、javaもoverrideをチェックする
アノテーションが用意されました。

117:デフォルトの名無しさん
08/05/18 13:19:39
そしてC++はほったらかしと。

118:デフォルトの名無しさん
08/05/18 13:30:36
C++ は互換性を異常に気にするからな。

119:デフォルトの名無しさん
08/05/18 13:40:20
override付きのときだけチェックしてくれれば良いんだけどなぁ。その他(virtual付き/何もなし)の時は今まで通りで。

120:デフォルトの名無しさん
08/05/18 13:42:08
それはあんまり override の価値がない気が

121:デフォルトの名無しさん
08/05/18 13:42:41
override が無い時に警告出してくれるならいいけど


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch