Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct IClonable
- {
- virtual IClonable* clone() = 0;
- };
- struct A : IClonable
- {
- IClonable* clone() { return new A(*this); }
- };
- struct B
- {
- virtual ~B() {};
- };
- int main()
- {
- A a;
- B b;
- IClonable *c;
- IClonable *c_cloned;
- // проверка в рантайме
- if (c = dynamic_cast<IClonable*>(&a))
- // сюда зайдет
- c_cloned = c->clone();
- if (c = dynamic_cast<IClonable*>(&b))
- // а сюда - нет
- c_cloned = c->clone();
- // но в подовляющем большинстве случаем нужна проверка на статике всего лишь
- c = &a;
- c_cloned = c->clone();
- //c_cloned = &b;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement