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 ++ вызывается, но когда он возвращает «конструктор копирования не вызывается». почему «копия застройщик не вызывается при возвращении из функции 'оператор ++?конструктор копирования не называется?
Вы спрашиваете *, почему copy contructor не вызывается при возврате из функции 'f' *. Я не понимаю, 'f()' пусто, он ничего не возвращает. –
Всегда спрашивайте ** настоящий ** код при задании вопроса. Поскольку ваш код содержит ошибки, которые мешают ему компилировать, это, очевидно, не тот код, который вы действительно используете. –
@BinaryWorrier: 'f()' не возвращает ничего, кроме 'a ++' does;) –