示されているコンストラクターはコピー コンストラクターとしてカウントされますか?
いいえ。コピー コンストラクターとしてカウントされません。
これは単なる変換コンストラクターであり、コピー コンストラクターではありません。
C++03 標準クラス オブジェクトのコピー
パラ 2:
class の非テンプレート コンストラクターは、最初のパラメーターの型が 、、またはであり、他のパラメーターがないか、他のすべてのパラメーターに既定の引数があるX
場合、コピー コンストラクターです。X&
const X&
volatile X&
const volatile X&
示されている代入演算子は、コピー代入演算子としてカウントされますか?
いいえ、そうではありません。
C++03 標準 12.8 クラス オブジェクトのコピー
パラ 9:
ユーザー宣言のコピー代入演算子は、型、、、またはのパラメーターを 1 つだけ持つX::operator=
class の非静的非テンプレート メンバー関数です。X
X
X&
const X&
volatile X&
const volatile X&
オンライン サンプル:
#include<iostream>
class Base{};
class Derived : public Base
{
public:
Derived(){}
Derived(const Base &rhs)
{
std::cout<<"\n In conversion constructor";
}
const Derived &operator=(const Base &rhs)
{
std::cout<<"\n In operator=";
return *this;
}
};
void doSomething(Derived obj)
{
std::cout<<"\n In doSomething";
}
int main()
{
Base obj1;
doSomething(obj1);
Derived obj2;
obj2 = obj1;
return 0;
}
出力:
In conversion constructor
In doSomething
In operator=