MyClass (MyClass * pObj)
Является не конструктором копирования, это перегруженный конструктор .
Конструктор копирования принимает ссылку на тот же тип, что и аргумент.Пример:
MyClass (MyClass &)
Компилятор неявно создает конструктор копирования для вашего класса, если вы не предоставляете свою собственную версию.Этот конструктор копирования будет вызван, когда компилятору потребуется сгенерировать копию объекта.
Упомянутый выше перегруженный конструктор будет вызываться только при явном вызове.
Пример кода :
#include<iostream>
class MyClass
{
private: int a;
char *str;
public:
MyClass(){}
MyClass(MyClass *pObj)
{
std::cout<<"\ninside *";
}
MyClass(MyClass &pObj)
{
std::cout<<"\ninside &";
}
void doSomething(MyClass obj)
{
std::cout<<"\ndoSomething";
}
};
int main()
{
MyClass ob,ob2;
MyClass obj2(&ob); //Explicitly invoke overloaded constructor
ob.doSomething(ob2); //Calls copy constructor to create temp copy of object
return 0;
}
Обратите внимание, что вывод:
inside *
inside &
doSomething