Как создать экземпляр класса?

2 ноября 2014 г. Просмотров: 410 Инструкции
Объектно-ориентированная парадигма программирования является превалирующей во всех современных средствах и языках, предназначенных для создания программного обеспечения. Индустриальным стандартом сегодня является объектно-ориентированный язык программирования C++. Создать экземпляр класса в C++ можно несколькими различными способами.
Создать сайт самостоятельно с Wix.com

Вам понадобится

  • - компилятор C++.

Инструкция

  • Создайте экземпляр класса как auto-переменную в локальной области видимости, определяемой функцией, методом класса или операторным блоком. Используйте декларативное или императивное определение объекта класса в выбранном месте программы. При необходимости осуществите явный вызов какого-либо конструктора с параметрами. Создайте объект при помощи кода, аналогичного следующему:void CMyClass::SomeMethod(){ COtherClass oSomeObject1; // создание объекта при помощи конструктора по-умолчанию COtherClass oSomeObject2(1980, "Victor V. Vakchturov"); // создание объекта при помощи конструктора с параметрами}Память под объекты классов, создаваемых подобным способом, как и под любые другие auto-переменные, выделяется на стеке. Поэтому при выходе из области видимости и удалении фрема стека, объект будет уничтожен (с вызовом деструктора).
  • Создайте экземпляр класса в области динамически распределяемой памяти при помощи оператора new. Определите переменную типа указателя на объекты класса, экземпляр которого должен быть создан. Присвойте ему значение, являющееся результатом вычисления оператора new. Вызывайте подходящий конструктор. Используйте фрагмент кода, аналогичный следующему:CSomeClass *poSomeObject; // определение указателя на объекты класса CSomeClasspoSomeObject = new CSomeClass; // Создание объекта классаCSomeClass *poSomeObject_2 = new CSomeClass(111, "3V"); // создание с вызовом конструктора с параметрами При создании объектов данным методом используется механизм выделения памяти, определяемый оператором new (если он не переопределен и не установлена собственная функция распределения), поэтому адрес нового объекта заранее не известен. Все объекты, созданные подобным образом, должны быть явно удалены оператором delete.
  • Создайте экземпляр класса при помощи оператора new на самостоятельно выделенном фрагменте памяти. Используйте код, подобный следующему:void *p0 = malloc(sizeof(CSomeClass)); // выделение памятиvoid *p1 = malloc(sizeof(CSomeClass)); // выделение памятиnew (p0) CSomeClass; // инициализаци объекта на выделенной памяти (конструктор по умолчанию)new (p1) CSomeClass(111, "abc"); // инициализация объекта (конструктор с параметрами)Перед уничтожением объектов, созданных данным методом, стоит явно вызвать их деструктор:((CSomeClass*) p0)->~();Создание объектов подобным образом в основном используется в шаблонных классах-контейнерах различных библиотек (таких как STL).
  • Оцените статью!