powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Конструктор при передаче объекта по значению
3 сообщений из 3, страница 1 из 1
Конструктор при передаче объекта по значению
    #38182117
TopSpace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
class Foo
{
public:
     Foo() { std::cout << "1"; }
   ~Foo() { std::cout << "2"; }
};

void F1(Foo f)
{
}

int main()
{
    Foo f;
    F1(f);
		
    return 0;
}


Вижу: 122. Т.е. при передаче объекта по значению происходит побитовая копия. Если добавить к-р копирования - все будет. Но почему деструктор 2 раза вызывается? Т.е. почему компилятор допускает вызов деструктора для объекта, у которого не отработал конструктор?
...
Рейтинг: 0 / 0
Конструктор при передаче объекта по значению
    #38182120
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TopSpaceпочему компилятор допускает вызов деструктора для объекта, у которого не
отработал конструктор?
Отработал. Умолчательный copy-constructor ничуть не хуже любого другого.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Конструктор при передаче объекта по значению
    #38182380
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При копировании объекта при вызове F1
Код: plaintext
1.
2.
    Foo f;
    F1(f);



должен работать конструктор копирования, такой:

Foo(const Foo& r) { std::cout << "3"; }

Тут он не объявлен и создаётся компилятором автоматом.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Конструктор при передаче объекта по значению
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]