| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Выделение памяти в конструкторе |
| Автор: paSha_X 25.12.2006, 17:32 | ||
Вот начал писать программу, в конструкторе надо выделить память под данные класса.............Вообщем всё компилируется, но мне кажется что что-то не то, посмотрите пжалста опытным взглядом, правильно выделяется память или нет?????
|
| Автор: Rockie 25.12.2006, 17:59 | ||
paSha_X, бессмысленно, но правильно =)
почему передается по указателю? |
| Автор: Anikmar 25.12.2006, 18:02 |
| void set(char* n) { strcpy(name,n); } А если строка будет больше 20? Где контроль длины? |
| Автор: paSha_X 25.12.2006, 18:08 |
| Rockie, вот это меня и ввело в заблуждение, без указателей ERROR....... Anikmar, это условно, просто строка максимум 20...... |
| Автор: Xenon 25.12.2006, 18:16 |
| paSha_X, сделай конструтор base() с параметром, аля int size. |
| Автор: Anikmar 25.12.2006, 18:22 |
Условно-не условно, а потом при тесте будешь голову ломать откуда AV вылазит. Если условно, то хоть 200 сделай, 20 совсем уж маленькая строка |
| Автор: paSha_X 25.12.2006, 18:23 | ||
Это я всё сделаю, меня интересует вот это:
|
| Автор: Anikmar 25.12.2006, 18:24 | ||
| А зачем по указателю? Можно так:
|
| Автор: paSha_X 25.12.2006, 18:29 |
| Ок всем спасибо, во всём разобрался....... |
| Автор: Daevaorn 25.12.2006, 19:11 |
| paSha_X, без своих контсруктора копирования и оператора присваивания будет очень интересный эффект |
| Автор: paSha_X 25.12.2006, 19:40 | ||||
| Да уж, всё равно не то что-то разве вот тут можно присваивать указателю эти значения....? Всё работает но не выводит эти 3 элемента( kol , price , date)
Вот накидал по этому же принципу простой класс, посмотрите, выводит шелуху какую-то.......
|
| Автор: Daevaorn 25.12.2006, 19:49 |
это не шелуха, а адрес выделенной памяти если выводишь так же как и "шелуху", то ясно почему не то выводит Разыменовывать указатель нужно. |
| Автор: paSha_X 25.12.2006, 19:53 |
Это как??? |
| Автор: Daevaorn 25.12.2006, 19:56 | ||
paSha_X,
|
| Автор: paSha_X 25.12.2006, 20:03 |
| Daevaorn, Ясно, спасибо...... |
| Автор: Rockie 25.12.2006, 20:18 | ||||||
paSha_X, проще говоря указатель - это переменная, которая содержит адрес другой переменной.
Здесь мы выводим содержимое указателя, то есть адрес, который в нем содержится.
Здесь выводим содержимое, то что находится по адресу, который содержится в указателе x. После вызова метода Set() там единица В свою очередь, так как указатель это переменная, у указателя есть свой собственный адрес, его тоже можно вывести:
|