Равзе конструктор возвращает 'успешность' исполнения? - страница 2

 
Viktar Dzemikhau:

Объект т.е. экземпляр класса создаётся через оператор new. А если методы класса статичные, то экземпляр не нужен. Можно вызвать было бы типа как здесь SQLite.вызываемый метод.

Объекты можно создавать и без оператора new. Подробности в книжках.

Функция isValid() не статическая.

 
Andrei Novichkov:
Простите, но Вы что то не то читали. Вам нужен нормальный учебник типа "C++ для чайников" и проштудировать его от корки до корки. Вы только не обижайтесь, я не хочу Вас обидеть, но все Ваши вопросы удивительно примитивны.

Может быть для тех, кто работал на плюсах этот вопрос и для чайников. Я на плюсах ничего серьёзного не писал. Писал только на Java. Там вообще указателей нет и много чего по другому. Плюсы изучать не хочу т.к. мне нужно от них лишь прикрутить некоорые моменты и не более того. Я перечитал ещё раз то, что нашёл.

Получается, оператор new нужен только для создания указателя(дескриптора), верно? Если указатель не нужен, то можно создавать без new. Ну тогда возникает вопрос. Если полноценных указателей в мкл нет, зачем тогда нужно создавать экземпляры посредствмо new? Ведь получается что и так можно создать экземпляр и вызвать всё что нужно. И без new, как я понял, будет хранится состояние объекта т.е. всё это есть. А так как указатель не полноценный в мкл и его не возможно разыменовать и тд, то какой в этом смысл тогда? Имею ввиду в использование оператора new.

 
Viktar Dzemikhau:

Может быть для тех, кто работал на плюсах этот вопрос и для чайников. Я на плюсах ничего серьёзного не писал. Писал только на Java. Там вообще указателей нет и много чего по другому. Плюсы изучать не хочу т.к. мне нужно от них лишь прикрутить некоорые моменты и не более того. Я перечитал ещё раз то, что нашёл.

Получается, оператор new нужен только для создания указателя(дескриптора), верно? Если указатель не нужен, то можно создавать без new. Ну тогда возникает вопрос. Если полноценных указателей в мкл нет, зачем тогда нужно создавать экземпляры посредствмо new? Ведь получается что и так можно создать экземпляр и вызвать всё что нужно. И без new, как я понял, будет хранится состояние объекта т.е. всё это есть. А так как указатель не полноценный в мкл и его не возможно разыменовать и тд, то какой в этом смысл тогда? Имею ввиду в использование оператора new.

Когда заранее не известно количество объектов, то создавать их нужно "на лету"
 
Viktar Dzemikhau:

Может быть для тех, кто работал на плюсах этот вопрос и для чайников. Я на плюсах ничего серьёзного не писал. Писал только на Java. Там вообще указателей нет и много чего по другому. Плюсы изучать не хочу т.к. мне нужно от них лишь прикрутить некоорые моменты и не более того. Я перечитал ещё раз то, что нашёл.

Получается, оператор new нужен только для создания указателя(дескриптора), верно? Если указатель не нужен, то можно создавать без new. Ну тогда возникает вопрос. Если полноценных указателей в мкл нет, зачем тогда нужно создавать экземпляры посредствмо new? Ведь получается что и так можно создать экземпляр и вызвать всё что нужно. И без new, как я понял, будет хранится состояние объекта т.е. всё это есть. А так как указатель не полноценный в мкл и его не возможно разыменовать и тд, то какой в этом смысл тогда? Имею ввиду в использование оператора new.

Например так
class SQLite3 {
  private:
    // Объявления private-переменных и методов
  public:
    // Объявления public-переменных и методов
    SQLite3(string filename, int flags, string vfs = "") {
      m_valid = sqlite3_open(filename, m_ref, flags, vfs);
      if (m_valid != SQLITE_OK)
        Print(">>> Error opening database [", filename, "]: ", SQLite3 :: errorCode2Msg(m_valid));
    }
   ~SQLite3() {
      if(isValid()) {
        int ret = sqlite3_close(m_ref);
        if (ret != SQLITE_OK)
          Print(">>> Error close connection: ", getErrorMsg());
      }
    }
    bool   isValid() const {return m_valid == SQLITE_OK;}
};
SQLite3 *db[];

void OnInit()
{
     if( ArrayResize(db, 5) == 5 ) 
          for(int i=0; i<5; i++)
               db[i] = new SQLite3(dbPath+"_"+IntegerToString(i), SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE);

     return;
}

void OnDeinit(const int reason)
{
     for(int i=ArraySize(db)-1; i>=0; i--)
          if( db[i] != NULL )
               delete db[i];
     return;
}
 
Viktar Dzemikhau:

Может быть для тех, кто работал на плюсах этот вопрос и для чайников. Я на плюсах ничего серьёзного не писал. Писал только на Java. Там вообще указателей нет и много чего по другому. Плюсы изучать не хочу т.к. мне нужно от них лишь прикрутить некоорые моменты и не более того. Я перечитал ещё раз то, что нашёл.

Получается, оператор new нужен только для создания указателя(дескриптора), верно? Если указатель не нужен, то можно создавать без new. Ну тогда возникает вопрос. Если полноценных указателей в мкл нет, зачем тогда нужно создавать экземпляры посредствмо new? Ведь получается что и так можно создать экземпляр и вызвать всё что нужно. И без new, как я понял, будет хранится состояние объекта т.е. всё это есть. А так как указатель не полноценный в мкл и его не возможно разыменовать и тд, то какой в этом смысл тогда? Имею ввиду в использование оператора new.

Почитайте про время жизни и область видимости объектов.

Причина обращения: