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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2012, 07:13   #1
Noob(c++)
Пользователь
 
Регистрация: 19.06.2012
Сообщений: 25
По умолчанию Друзья , классы, динам память

Короче был сегодня на экзамене, всех оставили на осень, а мне препод сказал что хочет поставить 5, я не объяснил ему классы до конца...
Код:
class My_class
{private:
public:
protected:}
объясните пожалуйста реализацию каждого из методов паблика привата и защищенного как вызывать их, через указатель , через имя я смог.
Потом как выделять динам память через нью и малок, просто много прочитал, а дословного объяснения не хватает , очень прошу ребята. Заранее спасибо!
Noob(c++) вне форума Ответить с цитированием
Старый 28.06.2012, 08:40   #2
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Приват вызвать можно только в пределах класса.
Протектед - в пределах класса и наследниках класса.
Паблик - везде, в пределах проекта. Естественно имея экземпляр класса.

Код:
My_class* my_class = new My_class();
Динамическое выделение памяти под твой класс. оператор new, С++ -ный подход
Проверять выделение памяти нет необходимости, т.к. при невозможности ее выделить генерирует исключение bad_alloc, во всяком случае так ведут себя уважающие программистов компиляторы.)))

Код:
My_class* my_class =(My_class*) malloc(sizeof(My_class));
Сишный подход, нужно проверять, выделена ли память под экземпляр.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 28.06.2012, 19:22   #3
Noob(c++)
Пользователь
 
Регистрация: 19.06.2012
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Krok27 Посмотреть сообщение
Приват вызвать можно только в пределах класса.
Протектед - в пределах класса и наследниках класса.
Паблик - везде, в пределах проекта. Естественно имея экземпляр класса.

Код:
My_class* my_class = new My_class();
Динамическое выделение памяти под твой класс. оператор new, С++ -ный подход
Проверять выделение памяти нет необходимости, т.к. при невозможности ее выделить генерирует исключение bad_alloc, во всяком случае так ведут себя уважающие программистов компиляторы.)))

Код:
My_class* my_class =(My_class*) malloc(sizeof(My_class));
Сишный подход, нужно проверять, выделена ли память под экземпляр.
так спасибо это понял, а можешь написать обращение к одному из паблик протекдет или приват через указатель -> в структуре это типо того вроде выглядит :
Код:
struct My_struct
{
char Artist[10];
int time;
}
int main()
{ My_struct music;
My_struct *music =(My_struct*)malloc(sizeof(My_struct)); \\ так вроде чтобы через -> работать?
music -> Artist; \\ вот так через указатель?
strcpy(music.Artist, "DJ c++");\\ это через точку
}
Noob(c++) вне форума Ответить с цитированием
Старый 29.06.2012, 07:14   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
а можешь написать обращение к одному из паблик протекдет или приват через указатель ->
Вам же написали, в пределах класса, а там есть неявный (или явный) this.

Цитата:
в структуре это типо того вроде выглядит
В структурах методы по умолчаию паблик. Паблик методы класса вызываются также.
p51x вне форума Ответить с цитированием
Старый 29.06.2012, 09:45   #5
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Код:
music->Artist; \\ вот так через указатель?
Да.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 29.06.2012, 11:16   #6
Петррр
Форумчанин
 
Аватар для Петррр
 
Регистрация: 02.09.2011
Сообщений: 336
По умолчанию

Цитата:
Сообщение от Krok27
Код:
My_class* my_class =(My_class*) malloc(sizeof(My_class));
malloc не вызывает конструктор класса.
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
Петррр вне форума Ответить с цитированием
Старый 03.07.2012, 22:33   #7
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

2Петррр
Цитата:
malloc не вызывает конструктор класса
Цитата:
выделена ли память под экземпляр
В Си нет ни конструкторов, ни классов.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Старый 04.07.2012, 07:50   #8
Петррр
Форумчанин
 
Аватар для Петррр
 
Регистрация: 02.09.2011
Сообщений: 336
По умолчанию

My_class у ТС объявлен как класс, а не структура. Я знаю, что в Си нет классов.
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
Петррр вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы, их друзья и шаблоны(С++) Vergilock Помощь студентам 2 17.06.2012 20:36
динам.память.массив. Ам тя Помощь студентам 0 22.03.2010 19:23
C,символы, указатели, динам.память ertar Общие вопросы C/C++ 6 24.12.2008 21:05