Пример #1
0
int main(void)
{
	std::srand(std::time(0));
	Grand *pg;
	Superb *ps;
	for(int i=0;i<5;i++)
	{
		pg=GetOne();
		pg->Speak();
		if((ps=dynamic_cast<Superb *>(pg))!=NULL)
			ps->Say();
	}
	return 0;
}
Пример #2
0
int main()
{
    std::srand(std::time(0));
    Grand * pg;
    Superb * ps;
    for (int i = 0; i < 5; ++i) {
        pg = GetOne();
        pg->Speak();
        if (ps = dynamic_cast<Superb *> (pg)) {
            ps->Say();
        }
    }
    return 0;
}
Пример #3
0
int main()
{
    std::srand(std::time(0));
    Grand * pg;
    Superb * ps;
    for (int i = 0; i < 5; i++)
    {
        pg = GetOne();
        pg->Speak();
        if( ps = dynamic_cast<Superb *>(pg))
            ps->Say();
    }
    // std::cin.get();
    return 0;
}
Пример #4
0
int main()
{
    srand(time(0));
    Grand * pg;
    Superb * ps;
    for (int i = 0; i < 5; i++)
    {
        pg = GetOne();
        cout << "Now processing type " << typeid(*pg).name() << ".\n";
        pg->Speak();
        if( ps = dynamic_cast<Superb *>(pg))
            ps->Say();
        if (typeid(Magnificent) == typeid(*pg))
            cout << "Yes, you're really magnificent.\n";
    }
    return 0;
}
Пример #5
0
int _tmain(int argc, _TCHAR* argv[])
{
		//запускаем генератор случайных чисел
		std::srand(std::time(0));
		//создаем указатели на базовый класс и первого наследника
		Grand * pg;
		//указатель на первого наследника необходим для вызова метода Say
		Superb * ps;
		for (int i = 0; i < 5; i++)
		{
			//создаем объект и получаем указатель, работаем через указатель базового класса
			pg = GetOne();
			//вызываем метод Speak
			pg->Speak();
			//пытаемся привести указатель базового класса к указателю на первого наследника
			//для вызова метода Say
			//метод Say для объекта базового класса не вызывается (его нет в базовом классе)
			if (ps = dynamic_cast<Superb *>(pg))
				ps->Say();
		}
		std::cin.get();
		return 0;
	}