Constructors

Конструктор создает и инициализирует новый экземпляр класса. В C++ класс может иметь несколько конструкторов. Это позволяет вносить изменение в экземпляры класса включая типы параметров и значения, и они могут существовать в каждом конструкторе. Ниже приведена версия C++ BankAccount класса, где содержиться дополнительные конструкторы.

1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: class BankAccount { private: double sum; string name; public: BankAccount(string nm) : name(nm), sum(0) {} BankAccount(string nm, double bal) : name(nm), sum(bal) {} double balance() { return sum;} void deposit(double amount) {sum += amount;} void withdraw(double amount) {sum -= amount;} string getName() { return name;}};
Listing 3 Initializer lists and multiple constructors

Использование initializer lists в конструкторах – удобный способ определить начальные условия для членов данного класса. Initializer lists отделены запятой, которые записываются после конструктора. Пример списков initializer приведено в Listing 3. В линии 8 от двоеточия и до пустых фигурных скобок включают список initializer. Этот initializer list устанавливает начальные условия private члену данных name, равного условию параметра nm. Оно также устанавливает начальный параметр данных sum равной нулю.

Listing 4 демонстрирует экземпляр класса BankAccount.

1: 2: 3: 4: 5: BankAccount account1("checking");BankAccount account2("savings", 200); account2.withdraw(100);account1.deposit(100);
Listing 4 Object instantiation

C++ иллюстрирует примерами объект, когда линия кода, содержащего декларацию объекта, выполняется. Экземпляр объекта вовлекает выполнение конструктор класса. Listing 4 объявляет два различных объекта BankAccount. Экземпляр производит работу, когда код, содержавший в линиях 1 и 2, выполняется.

Деструктор (Печь для сжигания отходов производства)

Destructor - специальная функция в C++ классе, названа так, когда объект завершает работу и должен освободить место в памяти. В отличии от конструктора, destructor в классе может быть только один. Он выполняется, когда необходимо уничтожить объект, destructor определяет действия, необходимые, чтобы высвободить память, который использовал объект. Например, рассмотрим базу данных. Когда объект завершает работу, destructor закрывает соединение с базой данных.

Мы рассмотрим более подробно использование destructor в 1.4.3 Dynamic Memory Management, когда начнем изучать динамическое управление памятью. До тех пор, рассмотрим распечатку, чтобы видеть по крайней мере, что из себя представляет destructor в C ++.

1: 2: 3: 4: 5: ~BankAccount() { if (balance() < 0) { cout << "Warning: negative balance!" << endl; }}
Listing 5 The destructor

Различие между определением destructor и конструктор очень тонкое. Заметьте в line 1 Listing 5, тильду (~) прописывают перед названием класса. Это и есть функция destructor для класса.