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

Вопрос по динамическому полиморфизму - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не могу понять задание. http://www.cyberforum.ru/cpp-beginners/thread347811.html
Определить класс - "Комплексное число" в виде модуля и аргумента комплексного числа. Составить пользовательскую функцию, которая вычисляет таблицу значений заданной математической функции ...
C++ Проверка кратности чисел. Программа должна выводить все числа кратные 11-ти в заданном диапазоне: void main() { int i=10,lim; cout<<"Enter upper limit:\n"; cin>>lim; while (i<=lim) { if ((i%11)==true)... http://www.cyberforum.ru/cpp-beginners/thread347806.html
C++ Алгоритмы планирования разветвленной структуры.
S = фигурная скобка, которая объединяет три уравнения: 1)ax+bx(x - в квадрате)-c, где x<a 2)a/x+(квадратный корень из (x+1)), где x=a 3)(a+bx)/(квадратный корень из выражения (x+1)), где x>a. И...
C++ Сравнение двух строк оператором ==
Мое почтение, уважаемые форумчане! Делаю шаблонный класс и случайно столкнулся с аномалией в моем понимании сравнения строк: две строки (char*) безошибочно сравниваются оператором == в операторе if....
C++ Не работает явное преобразование типа, а неявное работает. http://www.cyberforum.ru/cpp-beginners/thread347792.html
Опечатался. Не работает явное преобразования, а не явное работает. Есть класс( не обращайте внимание на члены данные класса ): class Complex { friend std::istream &operator>>( std::istream &,...
C++ Системы счисления и вывод результата Здравствуйте, я получил задание создать программу которая принимает значение в 10-тичной системе и выводит на экран значение в любой выбранной системе от 2 до 36. #include<iostream> using namespace... подробнее

Показать сообщение отдельно
Enfernuz
22 / 22 / 1
Регистрация: 11.04.2011
Сообщений: 67

Вопрос по динамическому полиморфизму - C++

03.09.2011, 22:04. Просмотров 465. Ответов 3
Метки (Все метки)

Здравствуйте. Прочитал про статический и динамический полиморфизмы.
Возник такой вопрос. Имеем код:

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
36
37
38
39
40
#include <iostream>
 
class base
{
    ...
    public:
        base(...) { ... };
        virtual ~base(){};
        virtual void DoSmth();
};
 
void base::DoSmth()
{
       cout<<"Base"<<endl; 
}
 
class derived: public base
{
    ...
    public:
        derived(...): base(...) { ... };
        ~derived(){}
        void DoSmth();
};
 
void derived::DoSmth()
{
       cout<<"Derived"<<endl;
}
 
int main()
{
 
    base* p;
    derived d(...);
    p = &d;
    p->DoSmth();
 
    return 0;
}
Почему происходит позднее связывание? Разве на этапе компиляции при вызове метода DoSmth() компилятор не может узнать тип объекта, на который ссылается указатель родительского класса?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru