前提・実現したいこと
C++初心者です。本を読んで独学で勉強中です。
その中で、分からない点があるため、質問させて頂いています。
やったこと
インクリメント(前置、後置)の実装
ソースコード(C++)
#include <string> #include <iostream> using namespace std::literals; // クラス struct IntLike { int data; }; // ++(インクリメント) の実装 IntLike operator ++(IntLike &obj) { ++obj.data; std::cout << "++インクリメントしました。その結果:"s; return obj; } // (インクリメント)++ の実装 IntLike operator ++(IntLike &obj, int) { auto temp = obj; ++obj.data; std::cout << "インクリメント++しました。その結果:"s; return temp; } // メイン関数 int main() { IntLike s{ 3 }; // 3で初期化 std::cout << "初期値は:"s << s.data << " です\n"s; ++s; // ++インクリメント std::cout << s.data << "\n"s; s++; // インクリメント++ std::cout << s.data << "\n"s; }
分からない点
①IntLike operator ++( IntLike & obj, int ){…}の部分の"int"はダミー引数らしいのですが、変数名を宣言しない場合、この"int"はどういった形で存在しているのでしょうか?
※(予想) int型の領域が確保されていて、値がnull?
②"++〇;" と、関数を読んだ時に、何故、IntLike operator ++( IntLike & obj, int ){…}が呼ばれるのでしょうか?
"++〇;"で、IntLike operator ++( IntLike &obj ){…}が呼ばれない理屈が、よく理解できていません。
③この例以外で、ダミー引数をプログラム中に使用する事はあるのでしょうか?
その場合、ダミー引数をどういった形で使用するのでしょうか?
なにはともあれ,それは「デクリメント」とは呼ばない.
ええと、「++X」も「X++」も一般には「インクリメント」と呼びます。
「デクリメント」は「--X」や「X--」のほうですね。
質問したいのは、++演算子の「前置」と「後置」に関してなのでは?
質問文は修正できるので、早めに修正したほうが回答が付きやすいと思います。
ご指摘ありがとうございます。
お恥ずかしい限りです…
質問文の修正をしました。
ソースコードと「分からない点」も頑張って修正しよう。と書いているうちに修正されたので、混乱するのは少数で済みました。
ご指摘ありがとうございます。
再度修正しました。
また間違っていたら、お手数ですが、ご指摘頂けると助かります。
回答2件
あなたの回答
tips
プレビュー