「C++のクラス作ったら、絶対にデストラクタをvirtual宣言しなさい」に対するエキスパートの意見 - Togetter
Twitterのつぶやきマッシュアップメディア!
@togetter_jpをフォロー
ホーム
まとめ作成
お知らせ
設定
ログイン
ついに決定!第2回トゥギャッターまとめまとめ!2月25日開催!
トップ
ニュース
社会
地域
芸能・スポーツ
IT・Web
科学・教養
カルチャー
趣味
生活
仕事
ネタ・お笑い
ログ・日記
震災
AKB48
放射能
支援
放射脳
iwj
援助
原発
速報
国内
アジア
アメリカ
ヨーロッパ
その他
政治
経済
国際
法律
環境
コラム
東京
東京近郊
北海道
東北
関東
北陸・信越
東海
近畿
中国・四国
九州・沖縄
海外
芸能
テレビ
ラジオ
野球
サッカー
ゴルフ
格闘技
競馬
モータースポーツ
その他
Android
Apple
インターネット
パソコン
モバイル
ガジェット
サイト制作
プログラミング
その他
科学
テクノロジー
エネルギー
数学
物理
宇宙
自然
人文
建築
心理
その他
アニメ
ゲーム
マンガ
アイドル
映画
音楽
書籍
演劇
ファッション
社会学
カメラ
車・バイク
電車
旅行
釣り
歴史
アート
デザイン
動物
その他
ハウツー
レシピ
グルメ
恋愛
マネー
節約
健康・医療
教育
ペット
起業・ベンチャー
経営
マーケティング
会計・人事
法務
就職・転職
語学・資格
ネタ
お笑い
大喜利
画像・動画
やってみた
その他
ログ
日記
思い出
雑談
メモ
飲み会
議事録
イベント
セミナー
復興
原発
支援
政府
自治体
トップ
>
トップ
>
AKB48
> 「C++のクラス作ったら、絶対にデストラクタを..
2010/07/28 15:50:54
virtual
c++
+
「C++のクラス作ったら、絶対にデストラクタをvirtual宣言しなさい」に対するエキスパートの意見
仮に「C++のクラス作ったら、絶対にデストラクタをvirtual宣言しなさい」という指示があった場合に、自分では反論できないことを知ったので後学のために質問しました。
エキスパートの皆様からの、珠玉の回答集です。
by
hkato193
27 fav
7237 view
お気に入りに登録ならここをクリック!
まとめ
メニューを開く
一括削除
【募集】 C++で「デストラクタには、どんな場合でもvirtual付けとけ」という意見に対する反論。将来のためとはいえ、デメリットは何もないのかしら?何かのコスト増とか。
返信する
RTする
ふぁぼる
hkato193
2010/07/28 13:29:39
@hkato193
詳しくないのでわずかに知ってる知識でリプしますと、そもそも virtual をつけることで「実行時に」どの関数を呼び出すのか、検索する手間が発生するので少なくともその分は遅くなるかと。
返信する
RTする
ふぁぼる
PG_kura
2010/07/28 13:34:33
@PG_kura
ありがとうございます。なるほど処理コストがそこに発生するのですね。同じソースでvirtual有る無しをビルドしてみたらサイズも増えていたので、将来のためにリソースを少し増やすという感触を得ました。ありがとうございました。
返信する
RTする
ふぁぼる
hkato193
2010/07/28 13:44:19
@hkato193
C++のデストラクタの件ですが、保険みたいなものですよね。デメリットはまったく無いわけではないですが、後々に高確率で発生しうるメモリリーク(しかも気付かない)を防ぐ為には、最初から virtualにしておいたほうが何かと安全だと思っています。
返信する
RTする
ふぁぼる
whitedev
2010/07/28 13:40:36
@whitedev
ありがとうございます。自分でも簡単なコードで試したのですが、そんな印象を得ました。将来の保険、は言い得てますね。
返信する
RTする
ふぁぼる
hkato193
2010/07/28 13:45:11
デメリットというか分からないけど、
struct 内の関数に後から virtual 付けてハマッたことある。ポインタ使って直にコピーしたときに先頭の vtable の分ズレてしまった
という。。
返信する
RTする
ふぁぼる
whitedev
2010/07/28 13:47:50
ということで「全クラスのデストラクタに問答無用でvirtualを付けなさい」に従うことにしました。
返信する
RTする
ふぁぼる
hkato193
2010/07/28 13:47:25
@hkato193
YAGNIの原則に従うと、継承しないclassにvirtual付けるな、じゃないでしょうか
:-) あと継承しないでtemplate使ったり
返信する
RTする
ふぁぼる
splhack
2010/07/28 13:53:47
@splhack
@Seasons
「You Aren't Gonna to Need It.」ですね。そう思ったのですが、将来他人の手にソースが渡ってあんな○○やこんな○○をされたときのリスクと、どちらが重いかなと思った次第です。継承したらコンパイルエラーって可能かしら?
返信する
RTする
ふぁぼる
hkato193
2010/07/28 14:07:02
@hkato193
boostが使える環境なら利用しない理由はありませんねー。
返信する
RTする
ふぁぼる
Seasons
2010/07/28 14:08:13
闇の軍団に意見を求めましょうかね
。RT
@hkato193
: 【募集】 C++で「デストラクタには、どんな場合でもvirtual付けとけ」という意見に対する反論。将来のためとはいえ、デメリットは何もないのかしら?何かのコスト増とか。
返信する
RTする
ふぁぼる
Seasons
2010/07/28 13:58:41
protected なら non-virtual
RT
@hkato193
: 【募集】 C++で「デストラクタには、どんな場合でもvirtual付けとけ」という意見に対する反論。将来のためとはいえ、デメリットは何もないのかしら?何かのコスト増とか。
返信する
RTする
ふぁぼる
sscrisk
2010/07/28 14:14:51
多態する予定のないクラスに付けるのは単に無駄
RT
@hkato193
: 【募集】 C++で「デストラクタには、どんな場合でもvirtual付けとけ」という意見に対する反論。将来のためとはいえ、デメリットは何もないのかしら?何かのコスト増とか。
返信する
RTする
ふぁぼる
decimalbloat
2010/07/28 14:16:02
@hkato193
デストラクタのvirtualが許されるのは土台レベルのベースクラス
だと思ってます。派生型の終着駅となるアプリのレイヤーでは指定する意味がない。
返信する
RTする
ふぁぼる
TeamMOSA2
2010/07/28 14:18:53
@hkato193
「何!?このvirtualって!一般的じゃない機能は使っちゃダメ!」という無知によるデメリット
返信する
RTする
ふぁぼる
g99djps
2010/07/28 14:21:55
@decimalbloat
@TeamMOSA2
ありがとうございます!意訳で恐縮なのですが、保険にはならず、virtualは「このクラスは派生されることを意識してますよ」な意味にも取られてしまうリスクになると理解しました。
返信する
RTする
ふぁぼる
hkato193
2010/07/28 14:28:23
@sscrisk
ありがとうございます。デストラクタがprotectedなら〜、という意味でしょうか?頂いた回答がすぐに理解できていなくてすみません・・・
返信する
RTする
ふぁぼる
hkato193
2010/07/28 14:31:35
@g99djps
www。今回の「いいからvirtual付けとけ」も無知だと思うんですけれどもね・・・。ありがとうございます。
返信する
RTする
ふぁぼる
hkato193
2010/07/28 14:32:38
本当は「いつデストラクタを仮想にするべきか」みたいな、C++使う上ではよくある話とか、「
Effective C++嫁
」で終わる話なんかでも記事にしたほうがいいなーとは思いつつも、めんどくさいわけである。
返信する
RTする
ふぁぼる
decimalbloat
2010/07/28 14:41:39
@hkato193
あ,継承です。protected 継承するならベースクラスのデストラクタは non-virtual でよい,という意味です。
返信する
RTする
ふぁぼる
sscrisk
2010/07/28 14:49:26
個人的メモ2。
型にしろ処理にしろデータにしろオブジェクトにしろ、閉じる方向へバイアスさせることで安全性を確保する
。たいがい、開く側へは限定的にバイアスできるようになっているが、仮に総体的に開く方向へ振ってやることでも安全性を確保できるようなコンセプトがあればイノベ(以下略)
返信する
RTする
ふぁぼる
PG_kura
2010/07/28 14:49:50
protected 継承っていつ使うんだっけ…
返信する
RTする
ふぁぼる
decimalbloat
2010/07/28 14:51:30
たぶん、
@hkato193
さんは言語作法はもとより、その理由もまた知りたいのだと思うのだけれど、僕には知識が足りないもどかしさ。
返信する
RTする
ふぁぼる
PG_kura
2010/07/28 14:51:50
@PG_kura
いいえ、いただいたコメントから先は私が調べなければいけない領域です(でないと身にならない)。ポインタを示していただいた時点で、とても勉強になっています。お気遣いありがとうございます。
返信する
RTする
ふぁぼる
hkato193
2010/07/28 15:02:51
@hkato193
したがっちゃだめえええええ
返信する
RTする
ふぁぼる
isoparametric
2010/07/28 14:53:44
Content from Twitter
残りを読む(23)
2011年を振り返ろう!傑作まとめランキングベスト20をこちらで公開中だよ。
みんなのおすすめ商品
商品を編集
おすすめ商品を登録する
暗黒への挑戦
アース・ウィンド&ファイアー
「NO(ノー)」と言える日本―新日米関係の方策(カード) (カッパ・ホームス)
盛田 昭夫,石原 慎太郎
NO!と言える子育て―子どもを蝕む22の育児常識
田中 喜美子
More Exceptional C++ さらに40のクイズ形式によるプログラム問題と解法 (C..
ハーブ サッター,Herb Sutter
Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL..
スコット・メイヤーズ
設定を変更する
Check
お気に入り
いいね
うーん
ブログ等に貼付ける?
iframe版
拡張版
new
張付けプレビュー
コメント
順番を並び替えて、TLが辿りやすくなるようにしました。
hkato193
2010/07/28 16:03:57
継承する予定のないクラスにはvirtualつけない! ちぃ覚えた! ……でも、普段は意識しないけど自然とそういうことしてる気がする
joy1192
2010/07/28 20:46:41
Effective C++を買ったはずだけどどこに積んだか思い出せない。Effectiveじゃない俺。
inazakira
2010/07/29 06:21:55
sscriskさんの呟きに対しての
@nonomachon
さんのブログを載せました。テスタビリティの観点から付けるべき、という素敵な意見も載ってるので必読です。
hkato193
2010/07/29 10:05:51
「色々な視点があって、その場その場で何が最適かは違うものの、まずは設計時点で『どうあるべきか』を考えること」
hkato193
2010/07/29 11:31:40
本件の指示に対する反論としてまとめると、途中からの指示であれば「設計の方針・思想が変化しますが、それでも良いですか?」が妥当かなあ。強引ですが。
hkato193
2010/07/29 13:57:23
コメントを入力してください。
Twitterにも投稿する
関連するオススメまとめ
生でエキスパートが語る 第1回
「生でエキスパートが語る」第2回
C++に襲われた
C++03でのローカルクラスの使い道
「生でエキスパートが語る」第3回
powered by Preferred Infrastructure
まとめを作成する
@togetter_jp
プロフィール
まだ自己紹介が設定されていません。
hkato193
twitter
rss
マイタグ
: 設定されていません。
このユーザの更新状況や活動をチェック!
フォローしている
0
フォローされている
1
まとめ
14
お気に入り
82
コメント
17
iOS/Macで提供しているタイマー精度のことはじめ
UIScrollViewで、Safariのタブ管理画面を実現するテクニック
つまるところ、iOSデバイスの外部ディスプレイ出力はアプリから使えるのか。
UIWebView内の処理を自分でコントロールする
2010/8/17に行われたiPhone_dev_sap早朝勉強会の補足
もっと見る
ニコ運営「権利者からじゃねーなら知らねーしwww」 監督「権利者です」 運営「…え…!?」 監督「初めまして、アニメーションの監督 北久保弘之です」 運営「…う、うわあ…ああ…べ…別の連絡手段で…」 監督「twitterで^^」
なぜ山口教授は橋下市長に一方的な負け方をしたのか。
2011/11/23 #stidev 南東京iPhone開発者勉強会 #12
n_sodaさんによるpthreadを使うべき場面について
JAVA(Android)のメモリ管理
もっと見る
KDDI広報(@kddipr)の「IS01アップデート無し」にau技術者(@takjob)が憤慨。 #IS01 #KDDI #au #androidjp
iOS/Macで提供しているタイマー精度のことはじめ
Excelがとうとうガチで方眼紙に…。
つまるところ、iOSデバイスの外部ディスプレイ出力はアプリから使えるのか。
「C++のクラス作ったら、絶対にデストラクタをvirtual宣言しなさい」に対するエキスパートの意見
もっと見る
注目のまとめリスト
その7・上杉隆VS町山智浩(2月3日)水道橋博士編 @uesugita..
ニコ運営「権利者からじゃねーなら知らねーしwww」 監督「権利..
第5回九州社協職員合同研究会議『災害と社協』第3部「日常の..
駐日フィンランド大使館公式ツイッターによる、日常フィンラン..
.@shibataism 氏のスタートアップが投資を受ける際に覚えてお..
乙武洋匡氏「オネエのプリキュアは嫌」に対する反応
トゥギャッター通信
第64回「ネコストーブとクレカトラブル」
第63回「iPhone爆発と震災の備え」
第62回「byeハドソンとエロ駅弁」
第61回「謎の雲とセンター試験」
第60回「江戸ハックとお雑煮」
トゥギャッターからのお知らせ
とっても簡単!はじめてのトゥギャッター..
まとめへのフィードバック機能がつきました!
まとめ作成画面でつぶやきへの返信の流れ..
トゥギャッターのまとめは「はてなダイア..
t.coやbit.lyなど、短縮された..
過去のアーカイブ
2012-02-06の人気まとめ
2012-02-05の人気まとめ
2012-02-04の人気まとめ
2012-02-03の人気まとめ
2012-02-02の人気まとめ
最近追加された商品
一番くじプレミアム 劇場版マクロスF サヨナラノツバサ H賞 きゅんキャラ シェリル 「ピンキー..
一番くじプレミアム 劇場版マクロスF サヨナラノツバサ H賞 きゅんキャラ シェリル~the e..
この中に1人、妹がいる! (MF文庫J)
ネット炎上であなたの会社が潰れる!―ウェブ上の攻撃から身を守る危機管理バイブル
人生、すべて当たりくじ!
一番くじプレミアム 劇場版マクロスF サヨナラノツバサ G賞 プレミアムアートグラス 全4種
コメント