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

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

Войти
Регистрация
Восстановить пароль
 
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
#1

Работа с объектом. - C++

17.01.2011, 03:27. Просмотров 667. Ответов 17
Метки нет (Все метки)

Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
struct time
{
int hours;
int mituts;
}
 
class pet
{
    char name[10];
    int years_old;
}
 
class day
{
    pet dog;
    
    public:
    time today;
  
    day(int h, int m)
    {
        today.minutes = m; // 1) правильная ли инициазация структуры?
        today.hours = h;
    }
}
 
day friday;
 
// 2) правильно ли я обращаюсь к элементам структуры, находящимся в объекте:
fiday.today.minutes = 10;
 
//  3) Как инициализировать(руется) объект, находящийся внутри объекта? в моём коде это time today;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2011, 03:27     Работа с объектом.
Посмотрите здесь:

Синхронная работа с объектом - C++
Здравствуйте. Возможно ли работать с объектом одновременно в нескольких функциях/процессах, имея его адрес в динамической памяти? Если да,...

Работа с классом и объектом Вектор - C++
Являюсь студентом,и по долгу учебы приступил к обучению премудростям "оСей с двумя плюсами". И обломался. получил задание на...

Проблема с объектом string - C++
Всем привет! Таким образом передаю текст объекту string: string str ; sscanf( "cyberforum.ru", "%s" , str.data() ); cout << "string...

Возвращение объектом значения - C++
Привет всем. Работал я тут на днях с классом fstream и увидал классную штуку, скажем: .... fstream file; ...

Время приобретения объектом константности - C++
Всем привет Есть такая ситуация: // Функция: void someFunc(const std::vector<MyObj> objects); std::vector<MyObj>...

Возврат значения объектом класса - C++
Может ли экземпляр класса возвращать значение своего поля без обращения к полю напрямую например class MyClass { int val = 5;...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
681 / 583 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
17.01.2011, 03:30     Работа с объектом. #2
1, 2 - да
так как вы задатите в конструкторе внешней структуры
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 03:39  [ТС]     Работа с объектом. #3
вы наверное имели ввиду так, как задам в конструкторе внешнего класса? Получается я могу использовать лишь конструктор по-умолчанию и не могу передавать параметры?
sandye51
программист С++
681 / 583 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
17.01.2011, 03:54     Работа с объектом. #4
FanAizu, где использовать?
тот вариант который у вас - правильный. Что не устраивает?
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 04:00  [ТС]     Работа с объектом. #5
Не устраивает вот что, если нужно создать объект класса day, то для того, чтобы присвоить значения элементам класса нужно в классе объявить конструктор по-умолчанию, если не надо передавать никаких параметров, либо если нужно, то объявить еще один конструктор, который принимает параметры, чтобы инициализировать значения элементов класса. Ну а как инициализируется объект класса pet, находящийся внутри класса day??? То есть я хочу создать объект класса day и при этом проинициализировать находящийся внутри объект класс pet.
sandye51
программист С++
681 / 583 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
17.01.2011, 04:03     Работа с объектом. #6
Цитата Сообщение от FanAizu Посмотреть сообщение
Ну а как инициализируется объект класса pet, находящийся внутри класса day???
всякая хунта будет в полях

можно написать
day(int h = 0, int m = 0)
{
today.minutes = m; // 1) правильная ли инициазация структуры?
today.hours = h;
}

получается одновременно и с параметрами и без
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 04:12  [ТС]     Работа с объектом. #7
В представленном вами коде используются поля структуры. А мне нужно создать объект класса day внутри которого есть элемент класса pet. Так вот как объект класса pet, являющийся элементом класса day проинициализировать нужными значениями??
sandye51
программист С++
681 / 583 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
17.01.2011, 10:04     Работа с объектом. #8
FanAizu, ты в своем коде проинициализировал объект класса time. что тебе мешает также проинициализировать объект класса pet?
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 17:13  [ТС]     Работа с объектом. #9
Вы в ООП, извините, вообще шарите? Данные класса pet находятся в секцие private. Поэтому и придумали конструкторы, чтобы иметь доступ к защищенным данным. Если бы я создавал объект класса pet, то я бы в классе pet добавил бы конструктор по-умолчанию и конструктор, принимающий параметры. Но как мне проинициализировать объект, являющийся элементом класса??? И time это не класс, а структура.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.01.2011, 17:28     Работа с объектом. #10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
struct time {
    int hours;
    int mituts;
}
 
class pet {
    char* name;
    int years_old;
public:
    pet(const char* Name = NULL, int Years = 0) : name(Name), years_old(Years) {}
}
 
class day {
    pet dog;
public:
    time today;
    day(int h, int m, const char* Name = NULL, int Years = 0) : today.minutes(m), 
                                                               today.hours(h), 
                                   dog(Name, Years) {}; 
};
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 17:40  [ТС]     Работа с объектом. #11
Только дочитал сегодня про наследование классов. Получается, чтобы использовать объект в качестве элемента класса нужно использовать наследование? В таком случае почему вы не объявили, что класс pet является базовым по отношению к классу day? И почему в списке инициализаторов вы используете имя объекта, а не название класса? то есть не pet(Name, Years), а dog(Name, Years) .
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.01.2011, 17:44     Работа с объектом. #12
Цитата Сообщение от FanAizu Посмотреть сообщение
Получается, чтобы использовать объект в качестве элемента класса нужно использовать наследование? В
не нужно, но так было бы лучше
Цитата Сообщение от FanAizu Посмотреть сообщение
В таком случае почему вы не объявили, что класс pet является базовым по отношению к классу day?
перечитайте свои посты, ты где нибудь упоминал о наследовании?

Цитата Сообщение от FanAizu Посмотреть сообщение
И почему в списке инициализаторов вы используете имя объекта, а не название класса? то есть не pet(Name, Years), а dog(Name, Years) .
учи мат.часть
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 17:48  [ТС]     Работа с объектом. #13
Цитата Сообщение от Maxwe11 Посмотреть сообщение
учи мат.часть
То есть? Если можно и без наследования, то используя список инициализаторов можно передать аргументы конструктору? Если их не передавать, то будет вызван конструктор по умолчанию? И будут ли доступны метода этого объекта?
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.01.2011, 17:50     Работа с объектом. #14
Цитата Сообщение от FanAizu Посмотреть сообщение
Если их не передавать, то будет вызван конструктор по умолчанию?
да
Цитата Сообщение от FanAizu Посмотреть сообщение
И будут ли доступны метода этого объекта?
из вне - нет, внутри класса - да
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 17:56  [ТС]     Работа с объектом. #15
Цитата Сообщение от Maxwe11 Посмотреть сообщение

из вне - нет, внутри класса - да
то есть я не смогу, как при наследование вызвать в программе унаследованные методы, а могу только внутри класса использовать их? В этом и заключается вся разница в использование наследования и объявление объекта, как элемента класса? И еще я не понял, что вы имели ввиду под учи мат. часть? То есть не понял почему вместо имени класса вы используете имя объекта, чтобы передать конструктору параметры?
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.01.2011, 18:03     Работа с объектом. #16
Цитата Сообщение от FanAizu Посмотреть сообщение
В этом и заключается вся разница в использование наследования и объявление объекта, как элемента класса?
да
Цитата Сообщение от FanAizu Посмотреть сообщение
То есть не понял почему вместо имени класса вы используете имя объекта, чтобы передать конструктору параметры?
потому что нам нужно иницилизировать конкретный объект dog, это сделано на тот случай если бы у тебя было несколько объектов petов внутри и каждый нужно было иницилизировать разными значениями
FanAizu
0 / 0 / 0
Регистрация: 14.01.2011
Сообщений: 31
17.01.2011, 18:07  [ТС]     Работа с объектом. #17
ясно, значит если бы я использовал наследование, то нужно было бы указывать имя класса, а не объекта?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2011, 18:09     Работа с объектом.
Еще ссылки по теме:

Задача на строки, с объектом класса string - C++
Дано осмысленное текстовое сообщение, разделенное пробелами и знаками препинания, в конце ставится точка. Поменять слова в сообщении по...

Разница между объектом и экземпляром класса - C++
Можете объяснить какая между этими понятиями разница?

Действие над объектом класса выполняет: - C++
Кому не сложно, помогите с тестом :)

Конструктор с параметром-объектом того же класса - C++
Была поставлена задача: определить конструктор с параметром-объектом того же класса, но я совсем не понимаю, что от меня требуется?...


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

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.01.2011, 18:09     Работа с объектом. #18
совершенно верно
Yandex
Объявления
17.01.2011, 18:09     Работа с объектом.
Ответ Создать тему
Опции темы

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