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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
DaskOFF
 Аватар для DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 521
Записей в блоге: 1
#1

Класс: создать класс "Person" - C++

08.08.2012, 22:20. Просмотров 1416. Ответов 14
Метки нет (Все метки)

Класс: создать класс "Person"

1,2
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>
class Person
{
 
 
    Person() : name("Alex"), address("Texas") {}
private:
    std::string name;
    std::string address;
};
а вот третье, Должны ли функции быть константными? Почему?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1240 / 989 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
08.08.2012, 22:29     Класс: создать класс "Person" #2
Естественно. Это аксессоры чтения (геттеры). Чтение состояния (в 99% случаев) не изменяет это состояние. То есть геттеры не должны изменять что-либо в полях класса, поэтому и метка const.
Almaz_KG
6 / 6 / 0
Регистрация: 15.05.2012
Сообщений: 105
08.08.2012, 22:31     Класс: создать класс "Person" #3
Функции (желательно) должны быть константными поскольку эти функции не являются функциями-модификаторами, т.е не изменяют сами данные. Хотя можешь константность не объявлять.
DaskOFF
 Аватар для DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 521
Записей в блоге: 1
08.08.2012, 22:33  [ТС]     Класс: создать класс "Person" #4
понял, спасибо
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
08.08.2012, 22:33     Класс: создать класс "Person" #5
Дополняя ответ ~OhMyGodSoLong~, скажу что в остальных случаях они тоже должны быть константыми (модификатор mutable в помощь).
DiffEreD
 Аватар для DiffEreD
1425 / 762 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
08.08.2012, 22:34     Класс: создать класс "Person" #6
Они должны быть константными так как они ничего не изменяют, а только выводят информацию. Ф-ция обещает компилятору ничего не изменять. Например:
C++
1
2
3
4
void Person::show() const
{
    cout<<name<<"\n"<<address;
}
ValeryS
Модератор
6446 / 4912 / 451
Регистрация: 14.02.2011
Сообщений: 16,283
08.08.2012, 22:35     Класс: создать класс "Person" #7
...конструктор, которому передаются две строки
Цитата Сообщение от DaskOFF Посмотреть сообщение
Person() : name("Alex"), address("Texas") {}
что то я не вижу здесь передачу. инициализацию вижу,передачу нет
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
08.08.2012, 22:38     Класс: создать класс "Person" #8
объявлять ф-ии const где только возможно. хотя бы по причине того, что потом в других const ф-ях можно было эти ф-ии вызывать. представь себе, что эти ф-ии - не const, а кто-то захотел использовать твой класс, и в своей const ф-ии хочет обратиться к твоей, которая вообще говоря, ничего не меняет, но ты забыл это объявить. проблема.
DaskOFF
 Аватар для DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 521
Записей в блоге: 1
08.08.2012, 22:51  [ТС]     Класс: создать класс "Person" #9
Цитата Сообщение от ValeryS Посмотреть сообщение
что то я не вижу здесь передачу. инициализацию вижу,передачу нет
Класс: создать класс "Person"
я думаю это имелось ввиду, то что проходилось в теме.

А как бы вы его выполнили?
DaskOFF
 Аватар для DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 521
Записей в блоге: 1
08.08.2012, 22:53  [ТС]     Класс: создать класс "Person" #10
Цитата Сообщение от ForEveR Посмотреть сообщение
Дополняя ответ ~OhMyGodSoLong~, скажу что в остальных случаях они тоже должны быть константыми (модификатор mutable в помощь).
думаю тема этого модификатора позже будет затронута в книге )
edward_jonson
 Аватар для edward_jonson
157 / 157 / 25
Регистрация: 23.02.2011
Сообщений: 388
08.08.2012, 23:08     Класс: создать класс "Person" #11
del this comm
DaskOFF
 Аватар для DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 521
Записей в блоге: 1
08.08.2012, 23:30  [ТС]     Класс: создать класс "Person" #12
ValeryS, скажите, как тогда надо решить данное упражнение?
ValeryS
Модератор
6446 / 4912 / 451
Регистрация: 14.02.2011
Сообщений: 16,283
08.08.2012, 23:41     Класс: создать класс "Person" #13
Цитата Сообщение от DaskOFF Посмотреть сообщение
ValeryS, скажите, как тогда надо решить данное упражнение?
у меня комент куда то делся
ну еще раз
примерно так
C++
1
Person(string _name="Alex",string _address="Texas") : name(_name), address(_address) {}
может быть так
C++
1
Person(char* _name="Alex",char* _address="Texas") : name(_name), address(_address) {}
Нет компилятора не могу сказать как правильней
Со строками редко работаю


инициализация по умолчанию
т.е если введешь так

C++
1
Person pr;
то получишь Алекса из Техаса
А если так
C++
1
Person pr1("Vasya","Russia");
то Васю из России
DaskOFF
 Аватар для DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 521
Записей в блоге: 1
08.08.2012, 23:44  [ТС]     Класс: создать класс "Person" #14
ValeryS, хм, о таком не рассказывалось, но буду знать

C++
1
Person(string _name="Alex",string _address="Texas") : name(_name), address(_address) {}
этот точно рабочий
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2012, 23:48     Класс: создать класс "Person"
Еще ссылки по теме:

C++ Класс Person
C++ Создать класс Person со свойствами name, gender, age, married и методами чтения/установки этих свойств
Разработать класс Person, который содержит соответствующие члены для хранения. C++
Создать класс EMPLOYEE, производный от класса PERSON и использовать их для вычисления зарплаты сотрудника C++
Реализовать класс Person C++

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

Или воспользуйтесь поиском по форуму:
DiffEreD
 Аватар для DiffEreD
1425 / 762 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
08.08.2012, 23:48     Класс: создать класс "Person" #15
Вот так может выглядеть ваше задание:
код
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
class Person
{
private:
    string m_name;
    string m_adress;
public:
    //конструктор, которому передаются две строки
    Person(string name = "None", string adress = "None adress"): m_name(name), m_adress(adress) {}
    string get_name() const {return m_name;}
    string get_adress() const {return m_adress;}
};
Yandex
Объявления
08.08.2012, 23:48     Класс: создать класс "Person"
Ответ Создать тему
Опции темы

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