Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2009, 23:47   #1
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию Вопросы по классам

Здраствуйте, Есть пара вопросов по классам:
1)Указатель на объект имеет доступ к Public элементам класса или Private? или ко всем?
2)Может быть указатель на класс(не на объект)?
3)Если создан константный объект, то значит ли это что для него все данные элементы тоже const? Если нет, то зачем нужно создавать еостантный объект?
4)Композиция сделана для того чтобы не делать кашу из данных?
5)
a) t.settime(13,27,6)
b) constructor(int h, int m, int s) :hour(h),minute(m)second(s)
Эти два объявления равны?
Если да то что лучше использовать?

Ну вот...пока все

Последний раз редактировалось JOFRIF; 20.08.2009 в 00:43. Причина: Добавил вопрос
JOFRIF вне форума Ответить с цитированием
Старый 20.08.2009, 00:42   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

1. Ко всем
2. Нет
3. Да, но это не относится к указателям на объект класса. Указатель может быть константным, а данные на которые он указывает - нет. Их можно изменить, присвоив текущий адрес неконстантному указателю.
4. Вообще-то композиция - это отношение контейнер -> содержимое. Контейнер не должен знать, какое у него содержимое, проще говоря, ему пофигу, что хранить.

Причем тут каша из данных я не сильно понимаю.
MaTBeu вне форума Ответить с цитированием
Старый 20.08.2009, 00:55   #3
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Цитата:
1. Ко всем
2. Нет
3. Да
Понятно, спасибо.

Цитата:
4. Вообще-то композиция - это отношение контейнер -> содержимое. Контейнер не должен знать, какое у него содержимое, проще говоря, ему пофигу, что хранить.
Контейнеры пока еще не учил так что я не совсем понял...

Цитата:
Причем тут каша из данных я не сильно понимаю.
Имеется ввиду, если например есть 3 класса.
Первый класс Employee
второй Date и 3 Time.

Вместо того чтобы объявлять в классе "рабочий" данные и функции связанные с датой и временем, я объявляю 3 отдельных класса(разбиваю инфу),а потом создaю объекты класса "дата" и времени в классе рабочий.Так я понял композицию.(Вот и решил уточнить).

зы Добавил вопрос.
JOFRIF вне форума Ответить с цитированием
Старый 20.08.2009, 01:25   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от JOFRIF Посмотреть сообщение
Имеется ввиду, если например есть 3 класса.
Первый класс Employee
второй Date и 3 Time.

Вместо того чтобы объявлять в классе "рабочий" данные и функции связанные с датой и временем, я объявляю 3 отдельных класса(разбиваю инфу),а потом создaю объекты класса "дата" и времени в классе рабочий.Так я понял композицию.(Вот и решил уточнить).
Ну, это основы ООП, инкапсуляция различных сущностей в классы, для удобной работы с ними и повторного использования кода.
По третьему вопросу(про const) вам ответили правильно, одно лишь уточнение: константыми становятся все свойства, кроме тех, которые помечены как mutable.
По пятому: конструктор есть инициализация объекта класса при создании. В то время как методы можно вызывать когда угодно. Определите необходимую инициализацую в конструкторах, а потом обрабатывайте данные с помощью методов
netrino вне форума Ответить с цитированием
Старый 20.08.2009, 01:50   #5
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Цитата:
Ну, это основы ООП, инкапсуляция различных сущностей в классы, для удобной работы с ними и повторного использования кода.
Я в принципе только начал учить ооп

Цитата:
По третьему вопросу(про const) вам ответили правильно, одно лишь уточнение: константыми становятся все свойства, кроме тех, которые помечены как mutable.
Спасибо, буду знать(Хотя это мне пока не пригодится, это же вроде как связано с полиформизмом (исходя из слова - mutable)).

Цитата:
По пятому: конструктор есть инициализация объекта класса при создании. В то время как методы можно вызывать когда угодно. Определите необходимую инициализацую в конструкторах, а потом обрабатывайте данные с помощью методов
Вопрос был немного другой
вот:

a) t.settime(13,27,6)

b) constructor(int h, int m, int s) :hour(h),minute(m)second(s)

Эти два объявления(a и b) равны?
Если да то что лучше использовать?
JOFRIF вне форума Ответить с цитированием
Старый 20.08.2009, 02:01   #6
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Ничего общего с полиморфизмом. mutable используется тогда, когда надо сказать, что данное свойство всегда может менятся. Даже когда объект объявлен как const. Это иногда бывает необходимо )
Цитата:
Сообщение от JOFRIF
Вопрос был немного другой
вот:

a) t.settime(13,27,6)

b) constructor(int h, int m, int s) :hour(h),minute(m)second(s)

Эти два объявления(a и b) равны?
Если да то что лучше использовать?
Хм... Значит я вас не так понял. а - вызов метода объекта класса, b - объявление конструктора . И что именно вас интересует? Что значит a и b равны?
netrino вне форума Ответить с цитированием
Старый 20.08.2009, 02:07   #7
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Цитата:
Хм... Значит я вас не так понял. а - вызов метода объекта класса, b - объявление конструктора . И что именно вас интересует? Что значит a и b равны?
Вот блин... только сейчас заметил я имел ввиду
а)Time t(13,27,6)

b) Time(int h, int m, int s) :hour(h),minute(m)second(s)


Цитата:
а - вызов метода объекта класса, b - объявление конструктора .
Значит обявления не равны
А что лучше использовать?

зы сорри, я просто запутался...
JOFRIF вне форума Ответить с цитированием
Старый 20.08.2009, 02:22   #8
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Ах вот вы о чём... Ну тут одно без другого никак)
b - объявление конструктора, a - вызов его. То есть например есть класс:
Код:
class Time {
    int h,m,s;
public:
    Time(int _h, int _m, int _s) : h(_h), m(_m), s(_s) { }
};
В нём мы объявляем конструктор класса(метод, который будет вызываться каждый раз, при создании объекта класса).
Код:
Time t(13, 27, 6); // Создаём объект класса. Здесь вызовется конструктор Time::Time(int _h, int _m, int _s);
Для большей наглядности, посмотрите в отладчике пошаговое выполнение программы, дабы увидеть процесс создания объекта, его инициализации и т.д.
netrino вне форума Ответить с цитированием
Старый 20.08.2009, 03:14   #9
JOFRIF
Форумчанин
 
Регистрация: 21.04.2008
Сообщений: 164
По умолчанию

Цитата:
Ах вот вы о чём... Ну тут одно без другого никак)
b - объявление конструктора, a - вызов его. То есть например есть класс:
Код:

class Time {
int h,m,s;
public:
Time(int _h, int _m, int _s) : h(_h), m(_m), s(_s) { }
};
В нём мы объявляем конструктор класса(метод, который будет вызываться каждый раз, при создании объекта класса).
Понятно.

Код:

Time t(13, 27, 6); // Создаём объект класса. Здесь вызовется конструктор Time::Time(int _h, int _m, int _s);

Цитата:
Для большей наглядности, посмотрите в отладчике пошаговое выполнение программы, дабы увидеть процесс создания объекта, его инициализации и т.д.
Я всегда хотел узнать процесс выполнения (чтобы лучше понять)
но не думал что есть такая возможность

А где мне найти отладчик?(есть дебаггер в самой среде, а есть какой то олли дебагер).
JOFRIF вне форума Ответить с цитированием
Старый 20.08.2009, 11:07   #10
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
1)Указатель на объект имеет доступ к Public элементам класса или Private? или ко всем?
from MaTBeu
Цитата:
1. Ко всем
что за бред. я даже пример приводить не буду. указатель на объект, точно так же, как и сам объект, имеет доступ только к public членам класса.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы по if, else? molodoyy Помощь студентам 5 21.03.2010 15:34
Вопросы по if, else? molodoyy Общие вопросы C/C++ 1 25.10.2008 18:55
вопросы MAcK Win Api 7 21.07.2007 18:08