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

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

Войти
Регистрация
Восстановить пароль
 
Psilon
Master of Orion
5770 / 4718 / 622
Регистрация: 10.07.2011
Сообщений: 14,195
Записей в блоге: 5
Завершенные тесты: 4
#1

Вызов конструктора текущего типа - C++

23.02.2013, 12:30. Просмотров 319. Ответов 4
Метки нет (Все метки)

Как сделать? В шарпе можно так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class MyClass
{
   public int A,B;
   
   MyClass(int a, int b)
   {
      A = a;
      B = b;
   }
   
   MyClass() : this(100,500)
   {
   }
}
то есть при вызове конструктора по-умолчанию вызывается конструктор с параметрами 100 и 500. Как это в С++ сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2013, 12:30     Вызов конструктора текущего типа
Посмотрите здесь:

C++ Вызов конструктора классf!
вызов конструктора C++
вызов конструктора C++
C++ Неправильный вызов конструктора
C++ Повторный вызов конструктора?!
C++ Вызов конструктора копий
C++ Вызов копирующего конструктора
C++ Вызов конструктора
C++ Вызов конструктора копий
C++ Вызов конструктора класса
C++ Неоднозначный вызов конструктора
C++ Вызов конструктора с аргументами

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
5454 / 1820 / 335
Регистрация: 10.12.2010
Сообщений: 5,384
Записей в блоге: 3
23.02.2013, 12:36     Вызов конструктора текущего типа #2
Все аналогично в общем-то:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class MyClass
{
public:
    int a;
    int b;
    MyClass(int A, int B);
};
 
MyClass::MyClass(int A=100, int B=500)
{
    a=A;
    b=B;
}
Jupiter
Каратель
Эксперт С++
6550 / 3970 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.02.2013, 12:43     Вызов конструктора текущего типа #3
Цитата Сообщение от Psilon Посмотреть сообщение
о есть при вызове конструктора по-умолчанию вызывается конструктор с параметрами 100 и 500. Как это в С++ сделать?
делегирование конструкторов возможно только в с++11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class MyClass
{
public:
    int a;
    int b;
 
    MyClass() : MyClass(100, 500) { }
 
    MyClass(int A, int B)
    {
       a = A;
       b = B;
    } 
};
Psilon
Master of Orion
5770 / 4718 / 622
Регистрация: 10.07.2011
Сообщений: 14,195
Записей в блоге: 5
Завершенные тесты: 4
23.02.2013, 13:11  [ТС]     Вызов конструктора текущего типа #4
Jupiter, ясно, жаль
silent_1991
Эксперт С++
4956 / 3032 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
28.02.2013, 09:39     Вызов конструктора текущего типа #5
Psilon, можно поступить иначе - делегировать инициализацию из всех конструкторов некоторому приватному методу init, в котором и выполнять все действия по инициализации. Правда, тут исключается возможность (а в некоторых случаях необходимость) использовать список инициализации, поэтому, если это необходимо, придётся использовать его прямиком из конструкторов, что может привести к дублированию кода.
Yandex
Объявления
28.02.2013, 09:39     Вызов конструктора текущего типа
Ответ Создать тему
Опции темы

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