Передача копии класса в функцию
От: andy1618 Россия  
Дата: 18.03.13 10:40
Оценка:
Встретился интересный учебный пример:
#include <iostream>

class A
{
public:
    A() { 
        std::cout << "+A"; 
    }
    ~A() { 
        std::cout << "-A"; 
    }
};

class B : public A
{
public:
    B() { 
        std::cout << "+B"; 
    }
    ~B() { 
        std::cout << "-B"; 
    }
};

void func( A a)
{
}

void main()
{
    B b;
    func(b);
}


Выдача по нему: +A+B-A-A-B-A
При передаче параметра в функцию, по-видимому, вызывается дефолтный копирующий конструктор (в выдачу он не попадает), соответственно, третья -A объясняется вызовом парного деструктора
при выходе из функции. А вот чем объяснить четвёртую -A?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.