49 / 44 / 8
Регистрация: 06.09.2010
Сообщений: 419
|
||||||
1 | ||||||
Оператор new04.09.2012, 20:23. Показов 5020. Ответов 26
Метки нет (Все метки)
Приветствую. Есть такой вопрос.
Почему одни программисты используют оператор new, а другие нет? Ведь если создавать объект этими способами
p>S. на java все надо создавать (массивы, объекты) через оператор new, а тут такой выбор. Объясните плиз нубу.
0
|
04.09.2012, 20:23 | |
Ответы с готовыми решениями:
26
Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1 Условный оператор, оператор ввода/вывода; плоскость и принадлежность точки Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор * Для чего нужен оператор двоеточие, если два двоеточия - это оператор расширения области видимости |
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
|
|
04.09.2012, 20:29 | 2 |
Думаю что всем кто пишет на C++ приходится использовать new. new используется для динамического создания объектов, и вы сможете удалить в любое время. В Java есть сборщик мусора поэтому там не приходится думать о памяти.
1
|
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
|
||||||
04.09.2012, 20:33 | 3 | |||||
Neon-z, это немного не корректно. Корректней будет так:
1
|
49 / 44 / 8
Регистрация: 06.09.2010
Сообщений: 419
|
|
04.09.2012, 20:40 [ТС] | 4 |
Invader_Zim, а почему надо указатель?
Без указателя же тоже прекрасно работает
0
|
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
|
|
04.09.2012, 20:41 | 5 |
Neon-z, а статический объект разрушается делитом?
1
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
04.09.2012, 20:41 | 6 |
Neon-z, Без указателя это не работает. Вот как раз почитайте в книжке про оператор new и все вопросы отпадут. http://liveworkspace.org/code/... e64df8b4c2
1
|
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
|
|
04.09.2012, 20:42 | 7 |
Neon-z, не может быть:
VS 2010: error C2440: 'initializing' : cannot convert from 'test *' to 'test'
1
|
49 / 44 / 8
Регистрация: 06.09.2010
Сообщений: 419
|
|
04.09.2012, 20:43 [ТС] | 8 |
Спасибо. Буду разбираться.
0
|
04.09.2012, 20:51 | 9 | |||||
C++ можно сказать уникален в возможности создавать объекты на стеке, а не в куче (с использованием new), и этим стоит пользоваться везде где удается.
1
|
49 / 44 / 8
Регистрация: 06.09.2010
Сообщений: 419
|
|
04.09.2012, 21:03 [ТС] | 10 |
Может я в свое время что то не так делал) я про указатель не помню, чтобы я его ставил, но все работало и даже как надо
Может сейчас путаница в голове из-за параллельного изучения java.
0
|
49 / 44 / 8
Регистрация: 06.09.2010
Сообщений: 419
|
||||||
04.09.2012, 21:09 [ТС] | 12 | |||||
В java используется неявлное использование указателей, то есть код
0
|
04.09.2012, 21:17 | 14 | |||||
не указателем, а handle'ом. далеко не одно и то же.
возьмем твой пример (подправленный):
в первом случае тебе не нужно заботиться об освобождении памяти, занимаемой объектом, во втором - нужно. иначе он там буде висеть, пока процесс не завершится. продолжать? что такое stack и что такое heap? или сам почитаешь и разберешься? лучше сперва почитай, и если что неясно - спроси. народ подсадит.
1
|
49 / 44 / 8
Регистрация: 06.09.2010
Сообщений: 419
|
|
04.09.2012, 21:19 [ТС] | 15 |
novi4ok, твой ответ по-моему самый ясный для меня Что такое стек и куча я знаю.
0
|
04.09.2012, 21:41 | 16 | |||||
я видел даже такой код (два раза!):
1
|
Twilight Parasite
154 / 150 / 7
Регистрация: 21.07.2011
Сообщений: 908
|
|
04.09.2012, 21:43 | 17 |
novi4ok, такой пример в википедии есть, вот люди и страдают фигней
1
|
49 / 44 / 8
Регистрация: 06.09.2010
Сообщений: 419
|
|
04.09.2012, 21:56 [ТС] | 18 |
Если честно, я с указателями скоко не боролся - так понять полностью не могу. Книг 10 использовал, искал где понятнее, на форумах спрашивал. Но так и не понял их. Мож я глупый, мож еще что то
0
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
|
04.09.2012, 22:06 | 19 |
ну int *pI = new int() гарантирует инициализацию нулем значения *pI
хотя явней конечно int *pI = new int(0);
1
|
04.09.2012, 22:10 | 20 |
1
|
04.09.2012, 22:10 | |
04.09.2012, 22:10 | |
Помогаю со студенческими работами здесь
20
Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->? Применяя оператор цикла FOR вычислить y. Оператор if в теле цикла не использовать. Значение m и n вводить с клавиатуры. Оператор break как оператор go to next Как перегрузить оператор<< и оператор>> ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |