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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Не могу понять задание. http://www.cyberforum.ru/cpp-beginners/thread347811.html
Определить класс - "Комплексное число" в виде модуля и аргумента комплексного числа. Составить пользовательскую функцию, которая вычисляет таблицу значений заданной математической функции y(z1), где z1, значение типа "Комплексное число", и у(z), где z, значение типа complex(стандартный класс). Таблица вычисляется для комплексных чисел, модуль которых равен mod(z) = 1, а arg(z) ...
C++ Проверка кратности чисел. Программа должна выводить все числа кратные 11-ти в заданном диапазоне: void main() { int i=10,lim; cout<<"Enter upper limit:\n"; cin>>lim; while (i<=lim) { if ((i%11)==true) cout<<"\n"<<i<<"\n"; 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. И это все - в версии СBuilder-а. Такое возможно?!
C++ Сравнение двух строк оператором ==
Мое почтение, уважаемые форумчане! Делаю шаблонный класс и случайно столкнулся с аномалией в моем понимании сравнения строк: две строки (char*) безошибочно сравниваются оператором == в операторе if. Подскажите, пожалуйста, как в данном случае происходит сравнение и почему работает == без перегрузки такового? Спасибо.
C++ Не работает явное преобразование типа, а неявное работает. http://www.cyberforum.ru/cpp-beginners/thread347792.html
Опечатался. Не работает явное преобразования, а не явное работает. Есть класс( не обращайте внимание на члены данные класса ): class Complex { friend std::istream &operator>>( std::istream &, Complex & ); friend std::ostream &operator<<( std::ostream &, const Complex & ); public: explicit Complex( double = 0.0, double = 0.0 );
C++ Системы счисления и вывод результата Здравствуйте, я получил задание создать программу которая принимает значение в 10-тичной системе и выводит на экран значение в любой выбранной системе от 2 до 36. #include<iostream> using namespace std; void st(int dig,int sys); void main() { int dig,sys=0; cout<<"Enter a digit:\t"; cin>>dig; cout<<"Enter a system(2-36):\t"; подробнее

Показать сообщение отдельно
Enfernuz
 Аватар для Enfernuz
22 / 22 / 1
Регистрация: 11.04.2011
Сообщений: 67
03.09.2011, 22:04     Вопрос по динамическому полиморфизму
Здравствуйте. Прочитал про статический и динамический полиморфизмы.
Возник такой вопрос. Имеем код:

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() компилятор не может узнать тип объекта, на который ссылается указатель родительского класса?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru