class DarkRaha extends com { // разработка приложений
            String a="Главная" b="Контакты" c="О сайте"
};

STL

основы

введение
Инструментарий
Проекты в C++
Комментарий
Утверждения
Идентификаторы
Область видимости
Литералы
Типы данных, переменные
Константы, перечисления
Выражения и операции
Агрегатные типы
Указатели
Ссылки
Массивы
Строки
Управляющие операторы
Функции
Аргументы функции

ООП

Терминология
Определение классов
Константные методы
Статические члены
Наследование
Инкапсуляция
Полиморфизм
Инициализация и уничтожение объектов
this

прочее

шаблоны
макросы
динамическая память
исключения
rtti

Справочник по C++

Инициализация и уничтожение объектов

Конструкторы и деструкторы особые члены класса, служащие для инициализации и уничтожения объекта. Ниже приведены некоторые их особенности:

Конструкторы имеют тоже имя, что и имя класса. Конструктор принимающий ссылку на собственный класс, называется конструктором копирования. Конструктор без аргументов называется пустым конструктором. Если в классе конструкторы явно не определены, то создается пустой конструктор по умолчанию. Также если пустой конструктор определен, то он используется для инициализации объекта по умолчанию.

Деструктор имеет тоже имя, что и имя класса, но перед именем ставится знак ~. При инициализации объекта, вначале инициализируются его родительские объекты в порядке включения.


#include <algorithm>
#include <iostream>

class ArrayInt {
protected:
	int * data;
	int l;

public:	
	// конструктор по умолчанию
	ArrayInt(){ 
	data= new int[10];
	l=10;
	}
	
	// инициализация вне тела конструктора
	// ссылочные члены инициализируются только так
	// ArrayInt(): data(new int[10]), l(10) {}
	
  // конструктор копирования
    ArrayInt(const ArrayInt& a){ 
	data= new int[a.l];
	l=a.l;
	std::copy(a.data,a.data+a.l,data);
	}
		
	ArrayInt(int n){
		l=n;
		data = new int [n];
	}
	
	деструктор
	~ArrayInt(){
		delete [] data;
		data=0;
		// для проверки автоматического вызова деструктора
		std::cout<<"\ndelete memory ok"<<std::endl;
	}
	
	int length() const {
		return l;}
};

class ArrayInt2: public ArrayInt  {
public:
	ArrayInt2(){;}	 // конструктор по умолчанию
	
	// вызов конструктора родительского объекта
	ArrayInt2(int n,int k): ArrayInt(n){
		std::fill(data,data+n,k);
	}	
	
	// перегружаем [] для удобства
	int& operator [] (int i)	{
		return data[i];}
};


int main() {	
	ArrayInt2 a(10,5); // создаем объект, используя конструктор
	ArrayInt2 b;  // используется пустой конструктор
	
	for(int i=0;i<a.length();i++)
		std::cout<<a[i]<<", ";
	
	return 0;
}

Рейтинг@Mail.ru