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

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

Войти
Регистрация
Восстановить пароль
 
Psilon
Master of Orion
Эксперт .NET
5891 / 4788 / 634
Регистрация: 10.07.2011
Сообщений: 14,406
Записей в блоге: 5
Завершенные тесты: 4
#1

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

23.02.2013, 12:30. Просмотров 329. Ответов 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. Как это в С++ сделать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2013, 12:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вызов конструктора текущего типа (C++):

Вызов конструктора - C++
void main() { std::string stemporary; int itemporary; float ftemporary; float fftemporary; ECM *pECM; for (int i=0;i<4;i++) ...

вызов конструктора - C++
Почему при повторном вызове конструктора выбивает ошибку ?Вот здесь ObjX(INUSE); no match for call to `(aClass) (int&)' #include...

вызов конструктора - C++
Здарова! Есть допустим класс: class Str { Str(); Str(Str&); Str(char*); };

Повторный вызов конструктора?! - C++
Мой небольшой класс class CString { private: char* str; int len; int real_size; public: CString() : len(0),...

Вызов конструктора копии - C++
Не вызывается конструктор копии из производного класса #include <iostream> using namespace std; class A { int x; public: ...

Вызов конструктора с аргументами - C++
есть класс приложения test_proj в интерфейсе класса в файле test_proj.h создается объект класса Settings. class test_proj { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
HighPredator
5542 / 1848 / 345
Регистрация: 10.12.2010
Сообщений: 5,455
Записей в блоге: 2
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;
}
1
Jupiter
Каратель
Эксперт С++
6554 / 3975 / 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;
    } 
};
1
Psilon
Master of Orion
Эксперт .NET
5891 / 4788 / 634
Регистрация: 10.07.2011
Сообщений: 14,406
Записей в блоге: 5
Завершенные тесты: 4
23.02.2013, 13:11  [ТС] #4
Jupiter, ясно, жаль
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
28.02.2013, 09:39 #5
Psilon, можно поступить иначе - делегировать инициализацию из всех конструкторов некоторому приватному методу init, в котором и выполнять все действия по инициализации. Правда, тут исключается возможность (а в некоторых случаях необходимость) использовать список инициализации, поэтому, если это необходимо, придётся использовать его прямиком из конструкторов, что может привести к дублированию кода.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2013, 09:39
Привет! Вот еще темы с ответами:

Вызов копирующего конструктора - C++
Помогите привести примеры для всех случаев.. Копирующий конструктор вызывается в следующих случаях: 1)если объект типа type...

Вызов конструктора классf! - C++
Всем привет! Вот есть конструктор. SampleTable::SampleTable(const sp<DataSource> &source) : mDataSource(source), ...

Вызов конструктора класса - C++
есть класс Set, и в нем есть конструктор, как с этого конструктора мне массивы перенести в метод другого класса так что бы над ними можно...

Вызов конструктора копий - C++
Почему из строк 186-191 вызывается конструктор копий 83-91? #include "stdafx.h" #define DEBUG #define SHOW_INVARIANTS #include...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.02.2013, 09:39
Ответ Создать тему
Опции темы

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