Kselax.ru

Hacker Kselax — the best hacker in the world

Menu
  • Блог
  • Контакты
  • wp plugin генератор
  • Русский
    • Русский
    • English
Menu

Как испортить объект без приведения типов?.

Posted on 22 апреля, 201323 апреля, 2013 by admin

Предположим, что правила проверки типов для аргументов ослаблены аналогично правилам для типов возвращаемых значений с тем, чтобы можно было заместить функцию, имеющую аргумент типа Base*, на функцию с аргументом Derived*. Напишите программу которая может испортить объект типа Derived без использования приведения типов. Опишите безопасное ослабление правил для типов аргументов замещаемых функций.

Опять запутанная задачка. Я чото ничего не пойму, что это за правила для проверки типов аргументов? Видимо это то правило при котором указателю базового класса можно присвоить указатель любого производного класса от него но не наоборот.

Что это значит? Я от вижу от нас хотят, что бы мы указатель на базовый класс присвоили указателю производного класса, что не возможно.

Значит мы должны просто предположить якобы это можно от короче у меня такой код получился:

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
//oclablenie pravil proverki
#include <iostream>
using std::cout;
using std::endl;
 
class Base
{
public:
virtual void print(){cout <<"Base::print()"<<endl;}
virtual Base* zam(Base*){return this;}
};
class Derived : public Base
{
public:
virtual void print(){cout <<"Base::print()"<<endl;}
virtual Base* zam(Derived*){return this;}
};
 
int main()
{
Derived* D=new(Derived);
Derived* Zam=new(Derived);
D=Zam->zam();
return 0;
}

Вот, что то типо того имелось в веду, а мб и нет. Вообщето имелось в веду что бы можно было функцию Base* zam(Baze*) в производном классе заместить на функцию Derived* zam(Derived*) отакой от фигней. И что бы при компиляции не было ошибок и при использовании механизма виртуальных функций вызывалась замещаемая функция. Но это фигня получается. Никаких правил я думаю описывать не буду. Я и сам честно не сильно понял, что куда и как.

Ладно все на этом. 🙂

[youtube]http://www.youtube.com/watch?v=dGqpq9H0zKM[/youtube]

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Рубрики

  • C++ (293)
  • JavaScript (1)
  • linux (1)
  • MFC (39)
  • node.js (2)
  • React (3)
  • vBulletin (5)
  • Visual Studio (9)
  • wordpress (18)
  • Разное (29)

Метки

Ajax bootstrap CentOS CLI expressjs FormData GDlib google Invisible reCAPTCHA JWT media MFC php react-router-dom redux repository wordpress RTTI STL vBulletin vector Visual Studio WINAPI wordpress wp-plugins XMLHttpRequest Двоичное дерево Задачи С++ Игры С++ Исключения С++ О-большое Операторы_С++ Перегрузка операторов С++ Поиск С++ Потоки Проектирование_С++ С++ Типы_С++ Типы С++ Шаблоны С++ библиотеки локализация макросы С++ сортировка С++

Свежие комментарии

  • RA3PKJ к записи visual C++, создание диалоговых окон.
  • JasonReant к записи Создание и использование статических библиотек .lib в visual studio.
  • MyWin2020 к записи Программка для заполнения форума на vBulletin 3.8.7
  • ScottJip к записи Создание и использование статических библиотек .lib в visual studio.
  • ArnoldKig к записи Создание и использование статических библиотек .lib в visual studio.
©2021 Kselax.ru Theme by ThemeGiant