@Veln

Как выбирать тип значения возвращаемой функции?

Здравствуйте. Помогите пожалуйста понять, как выбирать тип значения возвращаемой функции? Может быть есть какие-то статьи про это или сами сможете объяснить. Вот к примеру есть кусок кода с методом setdata и я не понимаю, почему написано void, а не к примеру int
class smallobj // определение класса
{
private:
 int somedata; // поле класса
public:
void setdata(int d) // метод класса, изменяющий значение поля
 { somedata =d; }
void showdata() // метод класса, отображающий значение поля
 { cout << "Значение поля равно " << somedata << endl;}
 };
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
Ternick
@Ternick
Всё очень просто.
Тип функции определяет возвращаемое значение.
Например:
int foo(){
    int i = 7666;
    return i;
}

Функция foo имеет тип int потому, что возвращает значение int;
Так же есть тип void, он используется если функция ничего не возвращает, как-нибудь так:
void increment(int& i) {
    i++;
}

Функция increment получает в аргументы адрес переменной int, затем увеличивает её значение на 1 и ничего не возвращает. поэтому void.
Всё очень просто :)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Senior .NET developer
Если функция в классе и меняет только класс то ее тип void. Дополнительно можете поставить exception при передаче неверных параметров или допустим обрыве связи или недоступности ресурса.

Если вам прям сейчас нужно значение, то возвращаете его.

Отдельно стоят статические методы. Они по идее не должны влиять вообще не на что, кроме singleton. Но это отдельный случай, который стоит обыгрывать в конкретном случае.

Резюмируя.

Инициализируйте члены в конструкторе.
Для доступа к состоянию используйте свойства
Возвращайте значения, только если они нужны прям сейчас.
Статические методы используйте с возвращаемыми значением, и не опирайтесь на значение класса.
Синглтон отдельный случай и его использование нужно хорошо обдумать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы