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

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

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

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

08.08.2012, 22:20. Просмотров 1494. Ответов 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;
};
а вот третье, Должны ли функции быть константными? Почему?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.08.2012, 22:20     Класс: создать класс "Person"
Посмотрите здесь:

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

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

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

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

Класс Person - C++
Здравствуйте есть одна задачка с вариантом её выполнения. Кто сможет помочь разобратьсяв этом запутанном задании? Вариант заданий...

Класс Person - C++
Добрый день, форумчане. Решал задание из книги С.Прата, №2 из главы 10. Пусть имеется определение простого класса в нем используется объект...

Реализовать класс Person - C++
Описания членов - данных пользовательских классов. ПЕРСОНА имя – char* возраст – int пол – int(bool)

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 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
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
08.08.2012, 22:33  [ТС]     Класс: создать класс "Person" #4
понял, спасибо
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
08.08.2012, 22:33     Класс: создать класс "Person" #5
Дополняя ответ ~OhMyGodSoLong~, скажу что в остальных случаях они тоже должны быть константыми (модификатор mutable в помощь).
DiffEreD
1429 / 766 / 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
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,730
08.08.2012, 22:35     Класс: создать класс "Person" #7
...конструктор, которому передаются две строки
Цитата Сообщение от DaskOFF Посмотреть сообщение
Person() : name("Alex"), address("Texas") {}
что то я не вижу здесь передачу. инициализацию вижу,передачу нет
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
08.08.2012, 22:38     Класс: создать класс "Person" #8
объявлять ф-ии const где только возможно. хотя бы по причине того, что потом в других const ф-ях можно было эти ф-ии вызывать. представь себе, что эти ф-ии - не const, а кто-то захотел использовать твой класс, и в своей const ф-ии хочет обратиться к твоей, которая вообще говоря, ничего не меняет, но ты забыл это объявить. проблема.
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
08.08.2012, 22:51  [ТС]     Класс: создать класс "Person" #9
Цитата Сообщение от ValeryS Посмотреть сообщение
что то я не вижу здесь передачу. инициализацию вижу,передачу нет
Класс: создать класс "Person"
я думаю это имелось ввиду, то что проходилось в теме.

А как бы вы его выполнили?
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
08.08.2012, 22:53  [ТС]     Класс: создать класс "Person" #10
Цитата Сообщение от ForEveR Посмотреть сообщение
Дополняя ответ ~OhMyGodSoLong~, скажу что в остальных случаях они тоже должны быть константыми (модификатор mutable в помощь).
думаю тема этого модификатора позже будет затронута в книге )
edward_jonson
158 / 158 / 25
Регистрация: 23.02.2011
Сообщений: 392
08.08.2012, 23:08     Класс: создать класс "Person" #11
del this comm
DaskOFF
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
08.08.2012, 23:30  [ТС]     Класс: создать класс "Person" #12
ValeryS, скажите, как тогда надо решить данное упражнение?
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,730
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
112 / 112 / 9
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 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"
Еще ссылки по теме:

Реализовать класс Person (персона) - C++
в общем, утопающий студент просит о помощи, потому как сам уже себя не успеет спасти. нужно к понедельнику сдать 5 лабораторных на с++ ...

Класс Person. Исправить ошибку в коде - C++
Ребят, помогите пожалуйста. Что-то никак не пойму в чем ошибка. Подчеркивает &quot;Халилов&quot; #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Класс Person. Очистка потока ввода - C++
Добрый вечер помогите найти ошибку в проге: задание : Разработайте класс Person, который содержит соответствующие элементы для...

Разработать класс Person, который содержит соответствующие члены для хранения. - C++
Разработать класс Person, который содержит соответствующие члены для хранения: -имени, -возраста, -пола и -телефонного номера. ...

Автоматическое изменение префикса телефонного номера в зависимости от страны. Класс Person. - C++
Есть класс Person. Так же пару функций. Одно из заданий не работает: Если номер телефона начинается с 0 и страна «Украина» добавить...


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

Или воспользуйтесь поиском по форуму:
DiffEreD
1429 / 766 / 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"
Ответ Создать тему
Опции темы

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