113 / 113 / 42
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
1

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

08.08.2012, 22:20. Показов 5017. Ответов 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;
};
а вот третье, Должны ли функции быть константными? Почему?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.08.2012, 22:20
Ответы с готовыми решениями:

Создать класс данных Person и класс отображения данных
Здравствуйте . Есть такое задание: Создать класс данных &lt;Data1&gt; и класс отображения данных -...

Реализовать пользовательские типы: класс Person и класс String
1)Разработать класс Person, который содержит соответствующие члены для хранения: имени, ...

Производный класс Employee и базовый класс Person
Класс Person содержит информацию о человеке - firstName - lastName - age - address -...

Создать класс Person для ввода фамилии и имя человека
Здравствуйте. Что-то не получается, ошибки выскакивают, именно в заголовочном файле при...

14
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
08.08.2012, 22:29 2
Естественно. Это аксессоры чтения (геттеры). Чтение состояния (в 99% случаев) не изменяет это состояние. То есть геттеры не должны изменять что-либо в полях класса, поэтому и метка const.
0
6 / 6 / 1
Регистрация: 15.05.2012
Сообщений: 105
08.08.2012, 22:31 3
Функции (желательно) должны быть константными поскольку эти функции не являются функциями-модификаторами, т.е не изменяют сами данные. Хотя можешь константность не объявлять.
0
113 / 113 / 42
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
08.08.2012, 22:33  [ТС] 4
понял, спасибо
0
В астрале
Эксперт С++
8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
08.08.2012, 22:33 5
Дополняя ответ ~OhMyGodSoLong~, скажу что в остальных случаях они тоже должны быть константыми (модификатор mutable в помощь).
0
1456 / 793 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
08.08.2012, 22:34 6
Они должны быть константными так как они ничего не изменяют, а только выводят информацию. Ф-ция обещает компилятору ничего не изменять. Например:
C++
1
2
3
4
void Person::show() const
{
    cout<<name<<"\n"<<address;
}
0
Модератор
Эксперт по электронике
8790 / 6575 / 892
Регистрация: 14.02.2011
Сообщений: 23,084
08.08.2012, 22:35 7
...конструктор, которому передаются две строки
Цитата Сообщение от DaskOFF Посмотреть сообщение
Person() : name("Alex"), address("Texas") {}
что то я не вижу здесь передачу. инициализацию вижу,передачу нет
0
555 / 509 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
08.08.2012, 22:38 8
объявлять ф-ии const где только возможно. хотя бы по причине того, что потом в других const ф-ях можно было эти ф-ии вызывать. представь себе, что эти ф-ии - не const, а кто-то захотел использовать твой класс, и в своей const ф-ии хочет обратиться к твоей, которая вообще говоря, ничего не меняет, но ты забыл это объявить. проблема.
0
113 / 113 / 42
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
08.08.2012, 22:51  [ТС] 9
Цитата Сообщение от ValeryS Посмотреть сообщение
что то я не вижу здесь передачу. инициализацию вижу,передачу нет
Класс: создать класс "Person"

я думаю это имелось ввиду, то что проходилось в теме.

А как бы вы его выполнили?
0
113 / 113 / 42
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
08.08.2012, 22:53  [ТС] 10
Цитата Сообщение от ForEveR Посмотреть сообщение
Дополняя ответ ~OhMyGodSoLong~, скажу что в остальных случаях они тоже должны быть константыми (модификатор mutable в помощь).
думаю тема этого модификатора позже будет затронута в книге )
0
163 / 163 / 68
Регистрация: 23.02.2011
Сообщений: 392
08.08.2012, 23:08 11
del this comm
0
113 / 113 / 42
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
08.08.2012, 23:30  [ТС] 12
ValeryS, скажите, как тогда надо решить данное упражнение?
0
Модератор
Эксперт по электронике
8790 / 6575 / 892
Регистрация: 14.02.2011
Сообщений: 23,084
08.08.2012, 23:41 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");
то Васю из России
1
113 / 113 / 42
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
08.08.2012, 23:44  [ТС] 14
ValeryS, хм, о таком не рассказывалось, но буду знать

C++
1
Person(string _name="Alex",string _address="Texas") : name(_name), address(_address) {}
этот точно рабочий
0
1456 / 793 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
08.08.2012, 23:48 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;}
};
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.08.2012, 23:48
Помогаю со студенческими работами здесь

Создать класс EMPLOYEE, производный от класса PERSON и использовать их для вычисления зарплаты сотрудника
Базовый класс: ЧЕЛОВЕК (PERSON) Имя (name) – string Возраст (age) – int Создать производный...

Создать класс Person со свойствами name, gender, age, married и методами чтения/установки этих свойств
Задание: Код: Person.h #include &lt;string&gt; #ifndef PERSON_H #define PERSON_H class Person {...

Создайте класс person. Создайте тип people, описывающий массив элементов типа person.
Создайте класс person. У него должны быть поля: name: string; sex: (&quot;муж&quot;, &quot;жен&quot;); height:...

Класс Person
Здравствуйте! Задание: Разработать класс Person, который содержит соответствующие члены для...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru