トップページ > プログラム > 2014年11月10日 > tFlOeqoP

書き込み順位&時間帯一覧

6 位/225 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000006000006



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
スレを勃てるまでもないC/C++の質問はここで 22

書き込みレス一覧

スレを勃てるまでもないC/C++の質問はここで 22
792 :デフォルトの名無しさん[sage]:2014/11/10(月) 18:06:53.74 ID:tFlOeqoP
質問です:

void f (void (A::*)() const &) {}

は、関数f の定義らしいのですが、引数の型が良く分かりません。
どういうことでしょう。

そもそも、定義だとすると、引数には型だけでなく、仮引数名が必要のはずですが、
それも省略されているように思えます。コンパイラによっては、関数定義内部で使わ
ない引数は、仮引数名を書いておくと警告が出てしまうので、仮引数名を省略することに
よって回避できるようですが。

A::* は、メンバへのポインタのようです。

const & の部分が一番分かりません。(A::*) の部分は、関数へのポインタのように思え、
その次の()は、その関数の引数の括弧で引数が無い場合のもののようです。その次に
const だけなら理解可能ですが、さらに & となるとこんなものは無い様に思えます。
スレを勃てるまでもないC/C++の質問はここで 22
793 :デフォルトの名無しさん[sage]:2014/11/10(月) 18:09:51.53 ID:tFlOeqoP
「&」の部分は、単に半角の「&」です。
単に「&」を書いたのですが、投稿時にこうなってしまったようです。
スレを勃てるまでもないC/C++の質問はここで 22
794 :デフォルトの名無しさん[sage]:2014/11/10(月) 18:16:10.85 ID:tFlOeqoP
もしかすると、

void (*&rpFunc)() const を
void (*)() const &rpFunc

と書く記法でもありましたでしょうか??
スレを勃てるまでもないC/C++の質問はここで 22
796 :デフォルトの名無しさん[sage]:2014/11/10(月) 18:26:18.54 ID:tFlOeqoP
>>795
void (A::*)() const
であればそうでしょうが、実際は、
void (A::*)() const &

のように、最後に&が付いてます。
スレを勃てるまでもないC/C++の質問はここで 22
798 :デフォルトの名無しさん[sage]:2014/11/10(月) 18:37:05.73 ID:tFlOeqoP
最近のC++の仕様で、

class A {
 void func1() const &;
};

というようなメンバ関数 func1() を記述できるとすれば理解可能ですが。
スレを勃てるまでもないC/C++の質問はここで 22
799 :デフォルトの名無しさん[sage]:2014/11/10(月) 18:44:07.22 ID:tFlOeqoP
>>798 で正しいようです。

「Ref-qualified member functions」

なる仕様がC++11で追加されてたようです:

http://en.cppreference.com/w/cpp/language/function
http://stackoverflow.com/questions/19474374/what-is-the-purpose-of-ref-qualified-member-functions


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。