объекту и дать ему возможность
Автор admin Суббота, 20 июня 2009 11:32
объекту и дать ему возможность выбрать правильное действие. Но конструктор предназначен для построения объектов, поэтому вызов виртуального конструктора означает следующее: «Я не знаю, к какому типу объекта ты относишься, но все равно построй мне правильный тип». В обычном конструкторе компилятор должен знать адрес таблицы VTABLE, связываемый с VPTR, а виртуальный конструктор (даже если бы он существовал) сделать этого не смог бы, потому что он не располагает всей информацией о типе на стадии компиляции. Невозможность создания виртуальных конструкторов оправданна, потому что это единственная функция, которая должна знать о типе объекта абсолютно все. И все же встречаются ситуации, когда в программе нужно сделать нечто, приближенное к поведению виртуального конструктора. Так, в примере с классом Shape нам хотелось бы передать конструктору Shape уточняющую информацию в списке аргументов и поручить создать конкретную разновидность объекта Shape (Circle или Square) без нашего дальнейшего вмешательства. Вместо этого обычно приходится явно вызывать конструктор Circle или Square. У Джеймса Коплина (James О. Co
Комментарии закрыты.
Последние комментарии