2015-11-02 4 views
-2

Я новичок в объектно-ориентированном программировании на C++, и он еще не щелкнул меня, так что это может показаться слишком простым вопросом. В моей домашней работе мне нужно: создать один экземпляр класса в функции main(). Что значит мой профессор? Когда я попытался найти ответ, они были слишком специфичны к проблеме, и я просто хочу, общий ответ пожалуйстаSingle Instance

+0

Название вещи вы ищете является «синглтон». –

+3

@MarkRansom, я не уверен. Мне кажется, что учитель просто хочет, чтобы объект класса был нормальным. Если это так, слово «сингл», находящееся там, вероятно, более запутанно, чем полезно. – chris

+0

Если класс 'A', то это просто' A a''? Спасибо @RSahu :) –

ответ

6

звука, как вам просто нужно что-то вроде:

class A {}; 

int main() { 
    A a; // creates instance of class A 

    return 0; 
} 
0

Классов одна из основной части C++. Более того, использование концепций ООП при создании и расширении классов также является очень мощной функцией cpp.

Классы содержат свойства и функции-члены. Оба они могут быть публичными, частными или защищенными.

Частные члены класса доступны только из других функций-членов того же класса.

Защищенные аналогичны частным, но к ним могут быть доступны и дочерние классы.

Публичные члены, как следует из названия, могут быть доступны объектами (экземплярами) класса.

Вы можете визуализировать класс как тип и объект как переменную, если этот тип. Просто для понимания.

Классы в C++ создаются следующим образом.

class Circle { 
    int radius; // member variable/property 
    public:  // type of function() 
    void set_values (int,int); 
    int area() {return 3.14*radius*radius;} 
}; 

Создание объекта/экземпляра класса означает, что вы создаете переменную типа.

Объекты могут быть просто упаковали следующим образом:

Circle c;    // Stack based object 
static Circle t1;  // Static object 

Здесь ключевое слово static используется для создания экземпляра одноплодной/объект этого класса.

Для получения дополнительной информации просто перейдите по этой ссылке. Может потребоваться базовое знание C++, можно получить от this, this или this ссылок.

0

Ниже мой код:

Singleton.h 
#ifndef __C__Review__Singleton__ 
#define __C__Review__Singleton__ 

#include <iostream> 
class Singleton{ 

private: 

Singleton() { } 
Singleton(const Singleton&); 
Singleton& operator=(const Singleton&); 

static Singleton *instance; 

public: 

static Singleton *getInstance(); 
static void release(); 
}; 
#endif /*   defined(__C__Review__Singleton__) */ 

Singleton.cpp 
#include "Singleton.h" 
Singleton *Singleton::instance = 0; 

Singleton* Singleton::getInstance() 
{ 
if(instance == nullptr) 
    instance = new Singleton(); 
return instance; 
} 

void Singleton::release() 
{ 
    if (instance != NULL) { 
      delete instance; 
      instance = NULL; 
    } 
} 
+1

Я не верю, что _Singleton_ на самом деле означал задачу OPs. Также просто бросая код без каких-либо дальнейших объяснений, не составляет очень хорошего ответа. BTW, ваша реализация singleton не очень хороша и имеет проблемы с безопасностью потоков. –

Смежные вопросы