@olava00

Инициализирование класса?

class test_t
{
public:
void test();
std::string test_2();
};

int main()
{
test_t test_1;
test_t test_2 = { };
test_t* test_3 = new test_t();
}


какой метод более оптимальный?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
У вас в примере вообще классы без данных, поэтому разницы никакой нет между первым и вторым вариантом. Третий выделят память под объект не на стеке, а в куче - поэтому и выделение и работа с объектом, обычно, будет дольше.

Если бы в объекте были данные, то первый вариант был бы быстрее всего, потому что он ничего бы не инициализировал, в отличии от остальных.

Если бы в объекте был еще и конструктор, то первый и второй варинт были бы идентичными.

Третий вариант всегда инициализирует объект и выделяет память, поэтому он будет медленнее.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
0hquazEd
@0hquazEd
Обычно всегда используется первый метод инициализации. Третий это инициализация указателя и она не имеет отношения к двум другим.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы