Я новичок в С++ и у меня есть вопрос.
Допустим, у нас есть базовый класс Base и два производных класса, Derived1 и Derived2. например Derived1 имеет конструктор, принимающий целое число, а Derived2 конструктор, принимающий логическое значение.
Можно ли определить во время выполнения (или во время компиляции), какой из этих двух подклассов создать, и назначить его базовому классу.
Что-то вроде этого: Base b = ???(значение), где значение имеет целочисленный или логический тип.
Заранее спасибо!
Base b
объявляет объект, а не ссылку на объект. Если вы назначаете производный объект базовому объекту, он будет нарезан (при условии, что он даже компилируется). Для динамического полиморфизма в С++ вам нужно использовать указатели, как в ответе Арака. - person Steve Jessop   schedule 24.01.2010Derived<int> d(someInt);
. - person Georg Fritzsche   schedule 24.01.2010