Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2018, 20:29   #1
Dmitry_B
Пользователь
 
Регистрация: 29.03.2009
Сообщений: 83
По умолчанию Допускается ли более одного конструктора класса?

Если требуется создавать класс разными конструкторами, отличающимися типом/числом параметров, то как это можно сделать?
Например, хочу конструировать 2-мя способами: MyComplex(double,double); MyComplex(int,double,int,char);
Или нельзя?
Dmitry_B вне форума Ответить с цитированием
Старый 27.11.2018, 20:32   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так попробуйте.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.11.2018, 20:34   #3
Dmitry_B
Пользователь
 
Регистрация: 29.03.2009
Сообщений: 83
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Так попробуйте.
Вот так в лоб - нельзя. Будет использоваться только первый в списке конструктор.
Dmitry_B вне форума Ответить с цитированием
Старый 27.11.2018, 20:38   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Где будет?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.11.2018, 20:40   #5
Dmitry_B
Пользователь
 
Регистрация: 29.03.2009
Сообщений: 83
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Где будет?
В программе. Второй в списке проигнорируется.
(Перевод предупреждения компилятора).
Dmitry_B вне форума Ответить с цитированием
Старый 27.11.2018, 20:44   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

На что именно предупреждение?
Покажите код.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.11.2018, 20:51   #7
Dmitry_B
Пользователь
 
Регистрация: 29.03.2009
Сообщений: 83
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
На что именно предупреждение?
Покажите код.
class CGraph : public CDialog
{
// Construction
public:
CGraph(CWnd* pParent = NULL, ULONG N=1, double X[]=0, double Y[]=0, CString Name=_T("Áåç èìåíè"), CString Xname=_T("Áåç èìåíè"), CString Yname=_T("Áåç èìåíè")); // standard constructor
CGraph(CWnd* pParent = NULL, ULONG N=1, double Fs=0, double Y[]=0, CString Name=_T("Áåç èìåíè"), CString Xname=_T("Áåç èìåíè"), CString Yname=_T("Áåç èìåíè")); // standard constructor
-------------------------------------------------------------------------
warning C4520: 'CGraph' : multiple default constructors specified
-------------------------------------------------------------------------
Compiler Warning (level 3) C4520
'class' : multiple default constructors specified

There were multiple default constructors specified for the given class. The first constructor was used.

Make sure that there is only one default constructor defined.
--------------------------------------------------------------------------
Не хотел замусоривать вопрос ненужными деталями.
Конструкторы отличаются 3-м аргументом.
Dmitry_B вне форума Ответить с цитированием
Старый 27.11.2018, 20:57   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Разговор не о том. Компилятор спрашивает - ты хорошо подумал какой конструктор вызовется при CGraph()?
p51x вне форума Ответить с цитированием
Старый 27.11.2018, 21:01   #9
Dmitry_B
Пользователь
 
Регистрация: 29.03.2009
Сообщений: 83
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Разговор не о том. Компилятор спрашивает - ты хорошо подумал какой конструктор вызовется при CGraph()?
Спасибо. Попробую. Надеюсь, по составу аргументов компилятор использует нужный конструктор.
Dmitry_B вне форума Ответить с цитированием
Старый 27.11.2018, 21:34   #10
Dmitry_B
Пользователь
 
Регистрация: 29.03.2009
Сообщений: 83
По умолчанию

Кому интересно: компилятор предупреждает, но программа работает верно.
Dmitry_B вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему при наличии конструктора в функции пишется название конструктора::и название метода класса? Мой повелитель Общие вопросы C/C++ 5 22.04.2016 00:41
Вызов конструктора производного класса для экземпляра базового класса max_prorok Помощь студентам 5 09.09.2015 09:39
вызов конструктора одного класса внутри конструктора другого tolikprankster Помощь студентам 1 04.08.2014 12:42
Переопределение конструктора класса RFbager Общие вопросы C/C++ 2 12.11.2010 14:17
Параметр конструктора класса = объект этого класса nazavrik Общие вопросы C/C++ 6 14.02.2010 13:48