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

Как выделить память для класса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Количество неодинаковых символов в строке http://www.cyberforum.ru/cpp-beginners/thread127978.html
Что-т не получается написать прогу...:\ #include <stdio.h> #include <conio.h> #include <string.h> int main () { int kolvo=0; int j; char buff;
C++ Ошибка компилятора при выводе string Stock::Stock(const char * co, int n, double pr) { cout<<"Вызван конструктор для: "<< co << "!\n"; company = co; if(n < 0) { cout<<"Количество пакетов не может быть отрицательным; для "<< company <<" установленно в 0.\n"; shares = 0; } else http://www.cyberforum.ru/cpp-beginners/thread127964.html
C++ Код по си++, необходимо внести поправку
#include<stdio.h> #include<conio.h> #include<string.h> int Find_in_file(const char *filename, const char *str) { char s; FILE *file;
C++ Как исправить ошибки
#include "stdafx.h" #include <iostream> #include <conio.h> #include <stdio.h> #include <string.h> using namespace std; #define STRLEN 100
C++ Файлы http://www.cyberforum.ru/cpp-beginners/thread127951.html
"Дан файл, содержащий сведения о книгах. Структура записи : фамилия и инициалы автора, название, издательство и год издания. Каждая запись заканчивается символом перевода строки (\n). Записи не упорядочены. Создать файл, содержащий записи указанной структуры в рабочем каталоге с именем, например, book.txt средствами любого редактора. Пример входного файла book.txt: Анисимов А.Н. Информатика ...
C++ Класс, реализующий стек Привет всем, Есть такая задача: Описать класс, реализующий стек. Написать программу, использующую этот класс для моделирования Т-образного сортировочного узла на железной дороге. Программа должна разделять на два направления состав, состоящий из вагонов двух типов (на каждое направление формируется состав из вагонов одного типа). Предусмотреть возможность формирования состава из файла и с... подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,927
Завершенные тесты: 1
11.05.2010, 20:23     Как выделить память для класса
Строго говоря, создание объекта разделяется на 3 этапа - выделение памяти, заполнение служебных полей, инициализация. Если хотим выделять память под сложные объекты самостоятельно, последние две операции всё равно придётся возложить на new, в данном случае - на конструкцию, известную как in-place new, который получает в качестве аргумента адрес памяти, выделенной под создаваемый объект.
C++
1
2
3
4
5
6
7
8
9
10
11
12
template<typename T> T* MyAlloc()
{
    return static_cast<T*>(malloc(sizeof(T));
}
 
void foo()
{
    MyType *object = MyAlloc<MyType>();  // Это мы выделяем память
    object = new(object) MyType();    // А это - заполнение vtable и вызов конструктора при помощи in-place new
    object->VirtualFunction();
    free(object);
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru