URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1823
[ Назад ]

Исходное сообщение
"как правильно вызвать инициализирующую функцию в классе?"

Отправлено Lammer , 01-Июл-03 12:33 
Пишу
class my_class {
  int x;
  char y;
public:
    my_class (int x, char y) { this->x = x; this->y = y; }
    my_class (int x) {   my_class(x, 'N');    }
                                     ^^ правильно или нет?????
    void output(void) { printf("%d,%c\n",this->x,this->y); }
};
описываю my_class X(2); X.output() показывает мусор (должно быть 2 и N)
где баг?

Содержание

Сообщения в этом обсуждении
"как правильно вызвать инициализирующую функцию в классе?"
Отправлено SergCh , 01-Июл-03 13:48 
>Пишу
>class my_class {
>  int x;
>  char y;
>public:
>    my_class (int x, char y) { this->x = x; this->y = y; }
> my_class (int x) {   my_class(x, 'N'); }
>            
>          
>          
>   ^^ правильно или нет?????
>    void output(void) { printf("%d,%c\n",this->x,this->y); }
>};
>описываю my_class X(2); X.output() показывает мусор (должно быть 2 и N)
>где баг?
Не правильно.
Опиши все одним конструктором
my_class (int x, char y='N')



"как правильно вызвать инициализирующую функцию в классе?"
Отправлено Andrey , 01-Июл-03 13:49 
>Пишу
>class my_class {
>  int x;
>  char y;
>public:
>    my_class (int x, char y) { this->x = x; this->y = y; }
> //my_class (int x) {   my_class(x, 'N'); }
    my_class (int x) { thix->x = x; this->y = 'N'; }
>          
>          
>   ^^ правильно или нет?????
>    void output(void) { printf("%d,%c\n",this->x,this->y); }
>};
>описываю my_class X(2); X.output() показывает мусор (должно быть 2 и N)
>где баг?



">    my_class (int x) { thix->x = x; this->y = 'N'; }"
Отправлено myself , 01-Июл-03 14:29 
Пастойте!
А как же переопределить конструктор?
Хочу инициализировать по разному - то 2-мя переменными
то одной переменной и чтоб можно было вообще без переменных -
пусть по умолчанию значения присвоит!

С функциями такое можно, почему нельзя с конструктором????


">    my_class (int x) { thix->x = x; this->y = 'N'; }"
Отправлено XMan , 01-Июл-03 15:43 
SergCh уже ответил:

my_class (int x, char y='N') { ................... };

Как видишь, второй параметр необязателен - по-умолчанию в него ставится 'N'.


">    my_class (int x) { thix->x = x; this->y = 'N'; }"
Отправлено myself , 01-Июл-03 15:54 
a-a-a!
точно!
Спасибо большое!