上の明確化が必要:key
ここは、私はC++でのコピーコンストラクタは、下記のコードスニペットの観点から呼び出されるだろうというときについての質問持つコピーコンストラクタ
bool do_stuff(int a, int b, char *c, Uid key = 0);
はdo_stuff()
Uid:Uid()
{
memset(data_, 0, UID_LENGTH);
}
/// @brief Copy construct a uid
Uid::Uid(const Uid &id)
{
memcpy(data_, id.data_, UID_LENGTH);
}
/// @brief Copy the contents of ptr as the contents of a new Uid
Uid::Uid(const u_char* ptr)
{
memcpy(data_, ptr, UID_LENGTH);
}
/// @brief Set the contents of a Uid with provided values
Uid::Uid(u_int64_t high, u_int64_t low)
{
…
…
}
:
class Uid {
...
...
private:
u_char data_[UID_LENGTH];
}
さて、Uid
は、これらのコンストラクタを持っています
do_stuff
が3つの引数を指定して呼び出された場合、のオブジェクトを作成するためにUid::Uid(const u_char* ptr)
が呼び出されています。 Uid::Uid(const u_char* ptr)
が選択されています。プロトタイプへ...
bool do_stuff(int a, int b, char *c, Uid key = (Uid)0);
を変更
でしょう... Uid::Uid(const Uid &id)
が呼び出されることを確認してください?
ありがとうございます!
これは実際にはコピーコンストラクタとはあまり関係ありません。 – juanchopanza
'UID'は' int'を使ってどのように構築されていますか?現時点では 'Uid(char *)'がデフォルト値から呼び出されます。 – user0042
あなたは知っている、私は私の答えを入力し、実現した、私はあなたが解決しようとしている問題が何であるかはわかりません。なぜあなたはデフォルトの引数として0を渡していますか? – StoryTeller