Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Что означает тип переменной после new? - C++

03.04.2016, 04:29. Просмотров 318. Ответов 7
Метки нет (Все метки)

Добрый день!
Подскажите, пожалуйста. Есть код создания памяти для переменной. Например
C++
1
int*name=new int;
Что означает тип переменной после new? Я как понимаю, int перед * означает тип значения , на которое ссылается указатель, а вот после new-что?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.04.2016, 04:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что означает тип переменной после new? (C++):

Восьмибитный тип переменной (что за тип, но не BYTE и не CHAR? - C++
Вроде давно занимаюсь программированием на С++, но встала проблема... Есть некий массив переменных имеющих 8 битный размер... без знака...

Что означает * перед переменной ? - C++
Собственно вопрос в название топика. Например есть программа: int main(int argc, char argv) { const int size = 255; char...

Что означает тип Class A __cdecl(void) ? - C++
День добрый! Помогите разобраться с одним кодом, уже несколько часов голову ломаю. #include <iostream> using namespace std; ...

Что означает название переменной в круглых скобках? - C++
Что означает название переменной в круглых скобках? В комментариях указан тип переменной и некоторые пояснения. auto c = 0; // int ...

Что означает имя переменной в конце объявления структуры? - C++
Всем привет. Что значит такая запись в конце структуры? }*head; И что было бы, если было бы так: }head;? struct Link ...

Поясните пожалуйста что означает двоеточие и то что идет после него - C++
В 4 строчке после параметра в скобочках нету ";" или же тела функции, что не сходится с моим шаблоном в голове. Поясните пожалуйста что...

7
SuperKir
03.04.2016, 04:32
  #2
0
Fatmarmelad
1 / 1 / 0
Регистрация: 20.02.2016
Сообщений: 364
03.04.2016, 18:53  [ТС] #3
Там расписан синтаксис, но конкретно, для чего предназначается тип переменной - информации нет.
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3945 / 2169 / 553
Регистрация: 18.10.2014
Сообщений: 3,783
03.04.2016, 19:03 #4
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
Там расписан синтаксис, но конкретно, для чего предназначается тип переменной - информации нет.
Странный вопрос. Оператор new создает объект в динамической памяти. Оператору new надо сказать, какого типа вы хотите создать объект. Вот этот самый тип int после new - это и есть то, как вы говорите опепатору new, что хотите создать объект типа int.
1
Fatmarmelad
1 / 1 / 0
Регистрация: 20.02.2016
Сообщений: 364
03.04.2016, 19:04  [ТС] #5
Я теперь, насколько понимаю, что и в левой и в правой части указан тип переменой для объекта, для которого и создаётся место в памяти.
0
hoggy
6697 / 2879 / 494
Регистрация: 15.11.2014
Сообщений: 6,478
Завершенные тесты: 1
03.04.2016, 19:12 #6
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
Я теперь, насколько понимаю, что и в левой и в правой части указан тип переменой для объекта, для которого и создаётся место в памяти.
ага.

в правой части указываем что хотим создать:
C++
1
2
3
4
5
new some; // аллоцировать в куче объект типа some, 
    // который построится дефолтным конструктором
 
new some(10); // аллоцировать в куче объект типа some, 
    // который построится конструктором с параметром
в левой части мы указывает тип указателя,
который будет проинициализирован адресом созданного объекта:

C++
1
2
3
4
5
int* p = new int(10); //p указывает на циферку 10
 
base* obj = new der(10); // указатель базового класса
 // содержит адрес наследника der,
 // который построился конструктором с параметром
как видите,
информация о типах в левой и правой части могут не совпадать.
поэтому, необходимо указывать как тип источника,
так и тип получателя
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
3945 / 2169 / 553
Регистрация: 18.10.2014
Сообщений: 3,783
03.04.2016, 19:27 #7
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
Я теперь, насколько понимаю, что и в левой и в правой части указан тип переменой для объекта, для которого и создаётся место в памяти.
Нет, тип создаваемого объекта указан именно в правой части.

В левой части указан тип указателя, в который мы будем сохранять результат выполнения оператора new. Он совсем не обязательно совпадает с типом создаваемого объекта. При желании/при необходимости мы можем например делать так

C++
1
2
3
void *buffer = new char[1024];
MyBaseClass *base = new MyDerivedClass;
std::shared_ptr<int>(new int(42));
0
Fatmarmelad
1 / 1 / 0
Регистрация: 20.02.2016
Сообщений: 364
03.04.2016, 21:51  [ТС] #8
Теперь понятно. Спасибо!
0
03.04.2016, 21:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2016, 21:51
Привет! Вот еще темы с ответами:

Что означает выражение стоящее после return? - C++
Всем привет. Довольно часто в уроках по c++. Вижу после написания программы либо функциии. return переменная; Что это значит? ...

Что за тип переменной ofstream ? - C++
Когда создается файл: ofstream A(&quot;&quot;); Какой тип переменной A ? И как передавать его в функцию?

Что означает const после круглых скобок функции - C++
всем привет. скажите, а что здесь значит const? int func(int var) const { return get; }

После выполнения (завершения) функции test переменная умрет, а что будет с переменной в Result? - C++
class abc { public: int argc; char **argv; char **azColName; }; std::list&lt;abc&gt; Result;


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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