Я проходил через «Multiple Inheritance for C++ by Bjarne Stroustrup, Published in the May 1999 issue of "The C/C++ Users Journal"». Ниже отрывок из того же (Страница 5/17),Когда и как принято решение использовать бросок или нет?
4,4 Casting
Явные и неявные литье также может включать в себя изменение значения указателя с дельта:
class A { void f(); }; class B { int f(); }; class C : A, B { }; C* pc; B* pb; pb = (B*)pc; // pb = (B*)((char*)pc+delta(B)) pb = pc; // pb = (B*)((char*)pc+delta(B)) pc = pb; // error: cast needed <-------------------- HERE pc = (C*)pb; // pc = (C*)((char*)pb-delta(B))
Он показывает нам, что pb = pc
можно сделать, не произнося его явно. Это определенно означает, что литье обрабатывается неявно. Затем
- Почему, когда мы пытаемся установить
pc = pb
указатель, нужно лить? - Что и где это правило, которое направляет это?
- Связано ли это с приращением/декрементом указателя по значению дельта?
EDIT
Jonathan Mee отметили этот вопрос как дубликат "What Type of Cast to Go from Parent to Child?". Боюсь, я не согласен. Мой вопрос касается, Почему литье и где это правило, которое направляет нас на литье или не на литье. Я думаю, что логика может быть такой же, но концепция совершенно другая. В его вопросе он сомневается (настаивает на том, чтобы не использовать динамический кастинг) использование dynamic_cast и static_cast. Мое сомнение по-прежнему остается за ним.
Вы будете иметь хорошее объяснение здесь: http://stackoverflow.com/questions/25137705/c-memory-layout-of-classes-using-inheritance – Dfaure
Возможный дубликат [Какой тип Cast Пойти от родителя к ребенку?] (http://stackoverflow.com/questions/32506579/what-type-of-cast-to-go-from-parent-to-child) –
@JonathanMee - Мой вопрос касается, почему кастинг и где это правило, которое побуждает нас бросать или не бросать. Я думаю, что логика может быть такой же, но концепция совершенно другая. Мое сомнение против вашего сомнения не имеет никакого сходства, которое должно быть отмечено как дубликат. В вашем вопросе вы знаете, почему вы бросаете, но у вас есть сомнения относительно того, какой из них использовать. Я сомневаюсь, что все еще несколько шагов за твоим :) – Abhineet