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

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

Восстановить пароль Регистрация
 
Psilon
Master of Orion
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
23.02.2013, 12:30     Вызов конструктора текущего типа #1
Как сделать? В шарпе можно так
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++ Вызов конструктора копий
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
 Аватар для HighPredator
5342 / 1725 / 320
Регистрация: 10.12.2010
Сообщений: 5,108
Записей в блоге: 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
Каратель
Эксперт C++
6542 / 3962 / 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
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
23.02.2013, 13:11  [ТС]     Вызов конструктора текущего типа #4
Jupiter, ясно, жаль
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
28.02.2013, 09:39     Вызов конструктора текущего типа #5
Psilon, можно поступить иначе - делегировать инициализацию из всех конструкторов некоторому приватному методу init, в котором и выполнять все действия по инициализации. Правда, тут исключается возможность (а в некоторых случаях необходимость) использовать список инициализации, поэтому, если это необходимо, придётся использовать его прямиком из конструкторов, что может привести к дублированию кода.
Yandex
Объявления
28.02.2013, 09:39     Вызов конструктора текущего типа
Ответ Создать тему
Опции темы

Текущее время: 04:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru