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

Наследование класс1 *test = new класс2 - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ "Завасание" программы, при входе в цикл http://www.cyberforum.ru/cpp-beginners/thread931695.html
Всем доброго времени суток. Пока писал чат на WinSock, столкнулся с такой проблемой: при в ходе в цикл While, программа ( среда - Windows Forms ) как-бы "зависает" - не реагирует на действия пользователя, перестает отрисовывать формы, не реагирует на клавишу "закрыть окно". Вот сам код: using namespace System::Runtime::InteropServices; char * StringToChar(System::String^ string); //...
C++ Игры на C++ Вот мне интерессно, стоит ли учиться создавать игры на С++? Или всё это ерунда и лучше игры создавать на тех же Delphi, WinAPI и т.д.? :) А то я хочу попытаться сделать какую-то игрушку консольную :) http://www.cyberforum.ru/cpp-beginners/thread931685.html
Как объединить пару байт в слово? (Загрузка WAV, Big Endian) C++
Привет! Есть звуковой файл с 16-и битными амплитудами. Да не суть. После открытия файла и чтения всяких заголовков, остаются чистые RAW данные, тоесть байты. Исходя из того, что файл у нас 16-и битный, в этих данных идут нужные мне амплитуда (просто значения) по два байта на каждую. Тоесть идёт последовательность байт: 0,1,2,3,4,5,6,7....и тд здесь первое значение хранится в первых двух байтах,...
C++ Ошибка
Привет всем, пытаюсь сделать конвертер из кг в граммы, у меня тут выдаёт ошибку подчёркнуто слово cout. Прошу, помогите разобраться. #include <iostream> using namespace std; int main () { int kg, grams cout << "Put in the number of kg: ";
C++ Среда разработки http://www.cyberforum.ru/cpp-beginners/thread931654.html
Слышал что вкусы различаются, соответсвенно и среда у многих отличается друг от друга... Простите, в чем разница между такими средами как dev c++, Microsoft visual и builder 5 - 6? Есть ли существенная разница между этими и возможно другими средами? Заметил что компиляторы требуют себе разную начинку и поэтому хочу послушать что об этом думают бывалые программеры.. :)
C++ Создание и подключение заголовочного файла Всем привет! Столкнулся с простой но очень интересной проблемой... Создаю новый проект в MVS2012 (пустой), создаю в нем файл исходного кода, пишу основную программу. Далее создаю в разделе "Заголовочные файлы" пустой файл *.h и пишу в нем определение класса с функциями. После чего инклудю его в исходном коде (мейновском) и пробую компилировать... Вылазеет ошибка, сообщающая что программа не... подробнее

Показать сообщение отдельно
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
31.07.2013, 22:45  [ТС]     Наследование класс1 *test = new класс2
Я ошибся, ни при такой записи, а только при записи типа BaseClass *test = new DerivedClass

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream> 
 
 
class BaseClass // Базовый класс
{
public:
BaseClass() { std::cout << "BaseClass constructor.. \n"; }
virtual ~BaseClass() { std::cout << "BaseClass destructor.. \n"; }
 
 void print() const
{ std::cout << "in BaseClass \n"; }
};
 
 
class DerivedClass : public BaseClass // Производный класс от BaseClass
{
public:
DerivedClass() { std::cout << "DerivedClass constructor.. \n"; }
virtual ~DerivedClass() { std::cout << "DerivedClass destructor.. \n"; }
 
 void print() const
{ std::cout << "in DerivedClass \n"; }
};
 
 
int main()
{
setlocale(LC_ALL,"");
 
BaseClass *test = new DerivedClass;
test->print();
 
system("pause");
return 0;
}


Вот без virtual, мы создаем объект базового класса и соответственно функция print будет вызываться из базового класса

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream> 
 
 
class BaseClass // Базовый класс
{
public:
BaseClass() { std::cout << "BaseClass constructor.. \n"; }
virtual ~BaseClass() { std::cout << "BaseClass destructor.. \n"; }
 
virtual void print() const
{ std::cout << "in BaseClass \n"; }
};
 
 
class DerivedClass : public BaseClass // Производный класс от BaseClass
{
public:
DerivedClass() { std::cout << "DerivedClass constructor.. \n"; }
virtual ~DerivedClass() { std::cout << "DerivedClass destructor.. \n"; }
 
virtual void print() const
{ std::cout << "in DerivedClass \n"; }
};
 
 
int main()
{
setlocale(LC_ALL,"");
 
BaseClass *test = new DerivedClass;
test->print();
 
system("pause");
return 0;
}


Тут мы уже используем virtual и уже вызывается функция print из производного класса..


Не знаю как правильно технически задать этот вопрос, но надеюсь вы там поймете, для этого и существуют virtual функции и записи типа BaseClass *test = new DerivedClass

Добавлено через 1 минуту
в этих мною написанных программах, полиморфизм, он заключается в том что один объект, в данном случае test, одновременно является объектом класса BaseClass и объектом класса DerivedClass?
 
Текущее время: 11:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru