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

Как работает динамическое выделение памяти под объект? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Возврат объекта класса из функции http://www.cyberforum.ru/cpp-beginners/thread808745.html
Имеется следующий код: #include "stdafx.h" #include <iostream> using namespace std; /*Задача: Определить класс список элементов. В определение класса включить два конструктора для...
C++ Описать класс Матрица Описать класс Матрица. C++ http://www.cyberforum.ru/cpp-beginners/thread808735.html
C++ Производные
Привет всем! У меня такая проблема: надо написать программку, которая бы выдала вид прозводной, например, на вход подается f=y*x-2*y^2, необходимо производную по у написать, на выходе должно...
C++ Непонятки со списком
Нашёл код в интернете и немного не понимаю его в некоторых местах. Объясните мне пожалуйста, зачем в коде вот тут: strcpy(spis->data,"0"); // инициализируем его данными spis->next = NULL; ...
C++ поиск обратной матрицы http://www.cyberforum.ru/cpp-beginners/thread808728.html
дана матрица A(почти матрица гильберта-отличается только 1-ая строчка): 1 1 1 1... 1/2 1/3 1/4 1/5... 1/3 1/4 1/5 1/6... ............................. нужно найти...
C++ Найти количесво четных элементов матрицы Нужно найти количество четных элементов матрицы в каждой строчке. Написала код, по идее ответ должен быть таким сумма=1,сумма=2,сумма=3. а вылезает сумма=1,сумма=1,сумма=1 помогите,... подробнее

Показать сообщение отдельно
Vourhey
Почетный модератор
6482 / 2256 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
15.03.2013, 12:34
Цитата Сообщение от mzarb Посмотреть сообщение
Я почему-то думал, что new возвращает rvalue, так как нет возможности обратится к этой памяти или применить операцию взятия адреса, по крайней мере до присваивания указателю, по этому откинул версию "объект.функция()".
Не важно, что возвращает new. Представь, что внутри него, грубо, реализован такой элементарный механизм:
1. вызов системной функции для выделения памяти
2. вызов конструктора для выделенного блока памяти
3. возвращение адреса памяти тебе в программу.
все, ничего сложного выдумывать не надо. Никаких rvalue.
Цитата Сообщение от mzarb Посмотреть сообщение
А new возвращает адрес выделенной памяти или все же указатель(без имени или с именем) на эту память?
Значение указателя и есть адрес
Цитата Сообщение от mzarb Посмотреть сообщение
И что будет делать конструктор, он инициализирует память нулями ?
Кто инициализирует память нулями? Конструктору, опять же, не важно, что лежит в памяти в общем случае. Он знает смещения, ему этого достаточно.
Цитата Сообщение от mzarb Посмотреть сообщение
И есть ли у этого объекта(адреса) такой же доступ к полям класса как и у обычных объектов
Ниче не понял. У нас разве необычный объект? Правда доступа и поля класса - это только языковые понятия. После компиляции они исчезают. Как и сами объекты.
Цитата Сообщение от mzarb Посмотреть сообщение
то есть можно ли будет в конструкторе писать адрес.поле и присваивать им аргументы если есть?
Почитай про this. Считай, что вот "оно" и есть переданный твоим функциям-членам скрытый указатель.
Цитата Сообщение от mzarb Посмотреть сообщение
Если да, то почему адрес туда подставляется после типа?
Адрес не после типа, а после new в скобках.

Добавлено через 8 минут
Цитата Сообщение от mzarb Посмотреть сообщение
указатель(без имени или с именем)
Что значит "вернуть с именем"?
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru