Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
linq
1 / 1 / 0
Регистрация: 05.11.2012
Сообщений: 26
#1

this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор) - C++

22.12.2012, 19:11. Просмотров 645. Ответов 7
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
class Test
{
    int i;
    public:
        void test(int i)
        {
            this -> i = i;
        }
};
Конструктор Test::Test всегда вызывается при неявной передаче объекта в test?

Добавлено через 7 минут
И передается ли этот неявный объект в таком случае:
C++
1
2
3
4
5
6
7
8
9
class Test
{
    int i;
    public:
        void test(Test *t,int i)
        {
            t -> i = i;
        }
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2012, 19:11     this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор)
Посмотрите здесь:
C++ Какой конструктор вызывается при value initialization объекта?
C++ Почему не вызывается конструктор копирования при возврате объекта из функции
Почему конструктор вызывается при присвоении объекта другому объекту C++
C++ При создании класса конструктор вызывается 2 раза, затем вызывается деструктор о_О
В какой момент вызывается конструктор для глобального объекта, использующего статическое выделение памяти? C++
Будет ли утрачена память, когда конструктор копирования вызывается для уже существующего объекта класса? C++
Почему конструктор вызывается повторно при преобразовании типов? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
22.12.2012, 19:34     this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор) #2
1. void test(Test * this, int i)

2. void test(Test * this, Test *t,int i)

Цитата Сообщение от linq Посмотреть сообщение
Конструктор Test::Test всегда вызывается при неявной передаче объекта в test?
У этого класса нет конструктора, принимающего параметры.
Kastaneda
Форумчанин
Эксперт С++
4514 / 2856 / 228
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
22.12.2012, 21:07     this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор) #3
Цитата Сообщение от Deviaphan Посмотреть сообщение
1. void test(Test * this, int i)
2. void test(Test * this, Test *t,int i)
так на самом деле выглядят методы на уровне ассемблера. Это и хотел сказать Deviaphan.

Не по теме:

не думаю, что это было понятно интуитивно

linq
1 / 1 / 0
Регистрация: 05.11.2012
Сообщений: 26
22.12.2012, 21:49  [ТС]     this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор) #4
Спасибо за ответы.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
23.12.2012, 05:12     this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор) #5
Цитата Сообщение от Deviaphan Посмотреть сообщение
1. void test(Test * this, int i)
Точнее
void test(Test * const this, int i)
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.12.2012, 06:52     this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор) #6
Цитата Сообщение от 0x10 Посмотреть сообщение
Точнее
void test(Test * const this, int i)
this не может быть константным, потому что this->i = i; Константным он будет только в константных методах.


Цитата Сообщение от Kastaneda Посмотреть сообщение
так на самом деле выглядят методы на уровне ассемблера.
Именно это я и имел в виду.
Но чисто условно, потому что на самом деле this передаётся через регистр, а не через стэк.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,012
23.12.2012, 07:16     this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор) #7
Deviaphan,
В константных методах будет константный указатель на константу.
const Test* const this
или
Test const* const this

Добавлено через 15 минут
Upd: выше я говорил о константности указателя, а не данных. Т.е. this не может быть lvalue, а поэтому должен быть константным указателем.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2012, 08:02     this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор)
Еще ссылки по теме:
C++ Зачем вызывается конструктор при объявлении указателя на класс
C++ Конструктор копии при возвращении объекта
Не вызывается конструктор C++
Вызывается не тот конструктор C++
C++ Не вызывается конструктор копии

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
23.12.2012, 08:02     this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор) #8
Цитата Сообщение от 0x10 Посмотреть сообщение
выше я говорил о константности указателя, а не данных.
НЕ обратил внимания на положение звёздочки. После конца света со мной так бывает.
Yandex
Объявления
23.12.2012, 08:02     this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru