The following code doesn't call the copy constructor.
struct X
{
int x;
X(int num)
{
x = num;
std::cout << "ctor" << std::endl;
}
X(const X& other)
{
std::cout << "copy ctor" << std::endl;
}
};
int main(int argc, _TCHAR* argv[])
{
X* x = new X(3);
X* y(x);
}
Output:
ctor
Is it copy-ctor elision?
The code
X* x = new X(3);
X* y(x);
is not the same as
X x(3);
X* y = new X(x);
You're not copying objects, but pointers. After X* y(x);
, both pointers will point to the same object.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.