-1
我已經創建了一個類並通過構造函數初始化了一個對象數組,爲什麼或者爲什麼不在這裏調用複製構造函數呢?它是複製elision?[問題]爲什麼複製構造函數沒有被調用
#include<iostream>
#include<stdio.h>
class ABC
{
int x, y;
public:
ABC()
{
x = 0;
y = 0;
}
ABC(int a,int b)
{
x = a;
y = b;
}
ABC(const ABC &obj)
{
std::cout<<"Copy called";
}
};
int main()
{
ABC obj[2] = {ABC(), ABC(5,6)}; //copy elision or copy constructor?
}
請提供一個編譯代碼...您缺少標題,所有的構造函數都是私有的。 – Holt
是的,這是由於copy-elision,如果您使用的是clang或g ++,請嘗試使用'-fno-elide-constructors'進行編譯。 – Holt
可能重複[什麼是複製elision和返回值優化?](http://stackoverflow.com/questions/12953127/what-are-copy-elision-and-return-value-optimization) – Holt