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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Koldun Zloy
307
Koldun Zloy  
Viktar Dzemikhau:

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

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

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

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

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

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

Artyom Trishkin
Модератор
102753
Artyom Trishkin  
Viktar Dzemikhau:

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

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

Когда заранее не известно количество объектов, то создавать их нужно "на лету"
Konstantin Nikitin
8362
Konstantin Nikitin  
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;
}
Koldun Zloy
307
Koldun Zloy  
Viktar Dzemikhau:

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

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

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

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий