Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Объясните зачем нужны конструкторы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Цикл: Имитация командной строки http://www.cyberforum.ru/cpp-beginners/thread791693.html
Имитация командной строки. Для чего использован в данном коде цикл For?#include "StdAfx.h" #include <windows.h> #include <iostream> #include <iomanip> #include <TCHAR.h> #include <time.h>...
C++ Не могу запустить программку компилятор выдаёт ошибку error LNK2019: ссылка на неразрешенный внешний символ Прошу прощения за глупые вопросы но я новичок в програмировании .Вот моя программка и копия ошибки которую выдаёт компилятор если кто сможет подскажите что ни так #include "stdafx.h"... http://www.cyberforum.ru/cpp-beginners/thread791680.html
2Д-игра C++
Здравствуйте, хочу создать 2D игру. Раньше такие игры писал на C++ Builder, но больше не хочу (не серьёзно это ка-кто). Изучаю OpenGL, но там слишком много всего. Мне нужно только выводить...
как работает cin.good() C++
Здравствуйте. Мне необходимо организовать "защиту от дурака". Пользователь должен ввести целое число. Моя программа должна считывать вводимые данные до тех пор, пока пользователь не введет целое...
C++ Массив: Образовать новую последовательность чисел так, чтобы она тоже была неубывающей http://www.cyberforum.ru/cpp-beginners/thread791643.html
Помогиет реализовать программу на С++ или дайте советы по ее построению Даны две последовательности a1 ≤ a2 ≤ ... ≤ an и b1 ≤ b2 ≤ ... ≤ bm . Образовать из них новую последовательность чисел...
C++ не открывает большие проекты IDE codeblocks так в целом работает нормально, но при открытии больших проектов намертво виснет, приходится завершать через диспетчер задач. есть ли решение этой проблемы? или есть ли аналогичная среда, чтобы не... подробнее

Показать сообщение отдельно
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6486 / 3130 / 307
Регистрация: 04.12.2011
Сообщений: 8,644
Записей в блоге: 5
21.02.2013, 17:18
Цитата Сообщение от ~B~ Посмотреть сообщение
Зачем нужны конструкторы? Читаю в книгах, смотрю видеоуроки и все равно не понятно
~B~, ещё можно бы добавить, что конструкторы могут выделять память, а деструктор может её освобождать.
Чаще всего, говорят, что конструкторы не выделяют, а инициализируют память, а выделяется она оператором new, скажем. Действительно, для приведенного примера это так и есть, при создании объекта такого класса в динамической памяти. Но часто бывает, что класс сам содержит динамические объекты, а тогда выделяет память именно он. Значения (указатели на выделенную память) возвращаются указателям - членам, так как эти указатели доступны конструктору, как методу и никакой тип возврата конструктору для этого не нужен.
То есть при наличии у класса объектов требующих выделения динамической памяти, конструктор должен её выделить, а деструктор освободить. И это не зависит от того, сам объект класса создается статически или динамически.
Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class A {
public:
int sz;
int *mass_of_sz;
A(int _sz, int initMass);
~A();
}; 
A::A(int _sz, int initMass){
sz=_sz;
mass_of_sz=new int[sz];//выделили память
for( int i = 0; i < sz; ++i ) mass_of_sz[i]=initMass;//инициализировали чем нужно
}
A::~A(){
 delete [] mass_of_sz;//освободили память
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru