class X
{
int i;
public:
X(int m) : i(m) {};
X(const X& x)
{
//cout "copy constructor is called\n";
}
const X opearator++(X& a,int)
{
//cout "X++ is called\n";
X b(a.i);
a.i++;
return b;
}
void f(X a)
{ }
};
int main()
{
X a(1);
f(a);
a++;
return 0;
}
這裏當調用函數'f'時,拷貝構造函數會按預期調用。在++的情況下,調用operator ++函數,但是當它返回「不調用複製構造函數」時。 爲什麼「,而從函數返回拷貝構造器是不是所謂的‘運營商+’?拷貝構造函數不被調用?
您問*爲什麼在從函數'f'*返回時不調用複製構造函數。我不明白,'f()'是無效的,它不會返回任何東西。 – 2010-06-21 12:53:21
請在提問時始終提供** real **代碼。由於你的代碼包含阻止編譯的錯誤,這顯然不是你真正使用的代碼。 – 2010-06-21 13:09:45
@BinaryWorrier:'f()'不會返回任何東西,但'a ++'不會;) – 2010-06-21 13:11:18