Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как узнать, какой функции какой файл *.a соответсвует? https://www.cyberforum.ru/ cpp/ thread446938.html
Друзья! Работаю с mingw, вот там надо так: если, допустим, вызываешь API- функцию, то надо подключать соответствующую библиотеку (?), делается это ключом линкёра примерно так: -lwww файл Эта...
Про деструктор и утечку памяти C++
Доброе время суток. Вот что дано: #include <string> #include <vector> class Symbols { protected: void add(std::string str); // добавления символа virtual void inputData() = 0; //...
Создать exe, запускающий exe C++
Говорю сразу: я ничего не смыслю в програмировании; зачем подался на такой форум? Надеюсь получить ответ на свой вопрос,упавая на то, что его реализация не такая сложная. У меня возникла...
C++ Странное поведение bool Помогал отлаживать код и мы наткнулись на удивительное. Кодер скрыл отображение варнингов в VS2010. Метод М1 не всегда возвращал значение типа bool. И потому в методе М2, вызывающем метод М1,... https://www.cyberforum.ru/ cpp/ thread445695.html
C++ Как средствами BC 3,1 запросить свободное место на указанном жёстком диске? https://www.cyberforum.ru/ cpp/ thread444851.html
Извиняюсь, если создал лишнюю тему, но ничего по своей проблемке я вроде не заметил. Если что-то есть, поправьте. А вопрос в следующем: как средствами BC 3,1 запросить свободное место на указанном...
C++ Указания адреса функции
Есть библиотека. Нужно чтобы функция в моей библиотеке указывала на функцию в чужой. Вот мой код: typedef int (WINAPI WJMP)(); extern "C" __declspec(dllexport) WJMP Test(void); *Test=...
C++ Как аннулировать потоки, которые заблокированы по переменной условия (pthread)?
И никак, что ли не аннулировать, получается? Вот, допустим, есть несколько потоков которые заблокированы по переменной условия: pthread_mutex_lock (&mutex); if (!(mozno_idti)) { ...
C++ Есть 4 потока. После осуществления блокировки барьером, 3 куда-то деваются, куда? (pthreads) Друзья! Как мог упростил код, вот суть В цикле создаются 4 вспомогательных потока, кадый из которых в цикле же 2 раза выводит свой TID. После первого вывода TIDа каждым потоком срабатывает... https://www.cyberforum.ru/ cpp/ thread444183.html
C++ Внедрение мультиплеера C++ https://www.cyberforum.ru/ cpp/ thread443994.html
Привет дорогие форумчане. Возникла задача сделать мультиплеер для игры(исходных кодов которой я не имею) . Разбил на задачки и вот одна из них. Первая задача это перемещение игроков. вот моя...
C++ Графический интерфейс приложений на C? Как сделать графический интерфейс приложения под Linux написанного на C? https://www.cyberforum.ru/ cpp/ thread443785.html
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
17.02.2012, 08:59  [ТС] 0

[C++] Взятие адреса конструктора. Физическое время существование объекта.

17.02.2012, 08:59. Просмотров 10547. Ответов 69
Метки (Все метки)

Ответ

конечно читал. попробую сформулировать
Прежде всего хочется указать на одну из самых распространённых ошибок начинающих: они считают, что конструктор выделяет память для объекта (создаёт объект), а деструктор - освобождает память (удаляет объект). Это неверно! Процесс выделения памяти для объекта описан в предыдущей главе. А конструктор только инициализирует объект (т.е. задаёт объекту некоторое начальное значение). Очень важно это понимать.
конструктор - "обычная функция" задача которой инициализировать поля объекта класса не более. все верно?
Итак, вкратце подведём итоги по выделению памяти для объекта и его времени жизни:
Автоматический объект. Время жизни начинается в момент входа в процедуру или лексический блок, в котором объявлен объект и заканчивается при выходе из процедуры или лексического блока.
зашли в лексический блок {} память выделилась верно?



мы имеем

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class A;
int main()
{
//зашли в блок - выделилась память под a,pa, buf. что для A() произойдет?
 
A a; -// вызвался конструктор A();
 
A(); // ? какая то временная неименованная переменная при входе в блок была создана для хранения этого?
 
char buf[100];
A* pa = new(buf) A; //вызвался конструктор A();
 
return 0;
}
прокомментируй пожалуйста эти три случая. просто на пальцах. хочу четкого понимания.

Вернуться к обсуждению:
[C++] Взятие адреса конструктора. Физическое время существование объекта.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.02.2012, 08:59
Готовые ответы и решения:

Взятие значение из адреса
Имеется код добавления объекта &quot;точка&quot; в массив точек: void arr_point::add_point(point &amp;p) {...

Взятие адреса в аргументе
Есть такой код: void STOCK::acquiare(const std::string &amp;co,long n, double pr) { ...

Взятие адреса у константной переменной при объявлении
Можно пример?

Зачем взятие адреса нулевого элемента массива, если сама переменная и так его содержит?
Доброго времени суток. Очень часто наблюдаю во всевозможных примерах такого вида код: void* bits...

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