[過去ログ] スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
925(2): デフォルトの名無しさん [sage] 2016/07/28(木) 11:08:15.39 ID:UbVdigRT(1/4) AAS
Cを一通り終えてC++を勉強してます。
仮想関数という機能の意義というか、利点が分かりません。
そもそも親と違う処理をしたいから、派生クラスで関数を定義しなおすワケですよね?
関数の名前を変えれば済む話、というか、変えるべきなのでは?
http://www.s-cradle.com/developer/sophiaframework/tutorial/Cpp/virtual.html の
例で言えば、最初から
class Clock
{
void Action_beep()
{
// 時計がピーピー
}
};
class LaughClock : public Clock
{
public:
void Action_laugh()
{
// 時計がケタケタ
}
};
と定義しておいて、笑いたければ baby.Action_laugh(); で事足りると思うのです。
素人の目からは、異なる処理を行う関数に同じ名前を付けることは、百害あって一利無し、バグを誘発することくらいしか意味がないように思えます。
このサイトでも 「ここで注意していただきたいのは…」 と書かれてますが、注意が必要になったのは、異なる処理に同じ関数名をつけたことが原因ですよね?
この欠点を補えるほどの利点て、何かありますか?
929(2): デフォルトの名無しさん [sage] 2016/07/28(木) 13:24:19.32 ID:UbVdigRT(2/4) AAS
皆様、レスありがとうございます。
せっかく解説してくださったのに、まだ理解できないようです。出来るの悪い子ですみませんorz
>>926
私の技量ではうまく言い表せないのですが‥
fwriteはバッファの内容をファイルに書き出すという動作において、プログラムからみれば
書き出し先がUSDでもSSDでも区別が必要ないと思います。
なので単一のfwriteでもOKかな‥と。
※強いて意識するのはfopen時だけですよね。
Action()はプログラムから処理内容を区別するので、本質が違うような気がします。
>>927
この「差し替え」は機能として理解できるのですが、
関数名から処理内容が一意に決まらなくなる‥という欠点が発生しますよね。
それが利点としてしっくりこないような…
それともオブジェクト名まで含めて判断する訓練を積めば克服できるものですかね?
先の例だとclock.Action()ならビープ、 baby.Action()なら笑う、みたいに。
Action()の処理内容が直感的に分かるオブジェクト名をつけないと、いちいち
クラス定義まで見返す手間がかえって増えそうな…
>>928
> という机上の空論で作られたのが仮想関数です
そう言われれば納得できるようなw
> 何かコールバックさせたいときに関数ポインタを隠蔽するために使う
> と理解しておけば十分であり、問題は起きないです
すみません。
初心者にはハードルが高いご解説なため、これからじっくり調べて考えて理解します…
930(2): 929 [sage] 2016/07/28(木) 13:38:39.41 ID:UbVdigRT(3/4) AAS
色々書きミスしてました。申し訳ありません。
誤: 出来るの悪い子ですみませんorz
正: 出来の悪い子ですみませんorz
誤: 書き出し先がUSDでもSSDでも区別が必要ないと思います。
正: 書き出し先がUSBメモリでもSSDでも区別が必要ないと思います。
939(1): デフォルトの名無しさん [sage] 2016/07/28(木) 16:51:03.07 ID:UbVdigRT(4/4) AAS
>>938
> 一度何かのフレームワークを触ってみるとよい
この一言!
心の琴線に触れる? とはまさにこのことで、分かりました!
(というか、分かりかけてきました!)
たしかにフルスクラッチでプログラムを作成する状況なら仮想関数を
使わなくても済みそうで、「なぜ重複しない関数名で最初からクラスを設計しないんだろう?」と
疑問だったのですが、それがままならない開発環境もある、ってことですね。
正直、調べても、フレームワークの理解はアバウトなんですが、
それでも関数オーバーライドが必須となりそうな状況は納得できました。
今日を2chで最良の日と心に刻みつけておきます。ありがとうございました。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.036s