2016-05-26 3 views
3

Я новичок в программировании, и мы только начали изучать «классы». Я покажу вам пример кода, который я нашел в Интернете. Мой вопрос: «« добавить »и« res » конструкторы и как возможно, что конструктор возвращает значение? «X res и X add» не являются методами типа int, и он все равно возвращает значение (нет переменной для res), поэтому я действительно запутался. Я видел несколько сообщений в stackoverflow, которые конструкторы не могут вернуть значение, но тогда что такое «X res и X add»?методы/конструкторы и их возвращаемые значения

#include <iostream> 
using namespace std; 

class X { 
    int a; 
    int b; 

public: 
    X (int a=7, int b=6) { 
     this->a = a; 
     this->b = b; 
    } 

    void print() { 
     cout << a << b; 
    } 

    X add() { 
     X res(a+b, a-b); 
     return res; 
    } 

}; 

int main() { 
    X x; 
    x.add().print(); 
    return 0; 
} 

ответ

3

Разъемы «добавить» и «res»?

No. add() является функцией членом класса X и возвращает X, res является локальной переменной внутри add() с типом X.

конструкторы не могут возвращать значение

Да, это правильно.

+0

Я думаю, что я получил его. И в конце концов я догадываюсь, что ответ - это что-то вроде 'x.print(); 'где' x' содержит значения 13 и 1 и с методом 'print();' мы просто печатаем их? – specbk

+0

@specbk Да, ваше понимание правильное. – songyuanyao

2

ли «добавить» и «Рес» Конструкторы и как это возможно, что конструктор возвращает значение?

Нет add() не является «нормальной» функции-члена класса, и он возвращает новый экземпляр X под названием res, который был инициализирован с помощью X(int, int) конструктора.

0

Конструктор классов - это специальная функция-член класса, которая является , выполняемой всякий раз, когда мы создаем новые объекты этого класса.

Конструктор будет иметь то же имя, что и класс, и он не имеет , но не имеет никакого типа возврата. Конструкторы могут быть очень полезны для установки начальных значений для определенных переменных-членов.

So add и print неконструктор. только X (int a=7, int b=6) { this->a = a; this->b = b; } является конструктором.

1

Что такое «X res and X add»?

X res означает, что res является объектом класса X; add - это имя функции-члена класса X, и оно может возвращать объект класса X.

Смежные вопросы