класс с абстрактными и виртуальными методами - PullRequest
2 голосов
/ 12 октября 2011

Могу ли я написать класс, который имеет виртуальные методы - (которые могут быть переопределены, но имеют поведение по умолчанию), а также абстрактные методы - (которые должны быть переопределены)

Могу ли я иметь определение, в котором яОпределить реализации для виртуалов, но не рефератов?

Кроме того, я могу создать абстрактные методы, которые не имеют реализации в неабстрактном / чистом виртуальном классе?

Ответы [ 3 ]

8 голосов
/ 12 октября 2011

Могу ли я написать класс, который имеет виртуальные методы - (которые могут быть переопределены, но имеют поведение по умолчанию), а также абстрактные методы - (которые должны быть переопределены)

Да.

Могу ли я иметь определение, в котором я определяю реализации для виртуалов, но не рефераты?

Да.

Кроме того, я могу создать абстрактные методы, которые не имеют реализации в неабстрактном / чистом виртуальном классе?

Нет. Наличие чисто виртуальных членов запрещает вам создавать экземпляры классов, то есть делает класс абстрактным.

1 голос
/ 12 октября 2011

Да, вы можете. Если в вашем классе есть чисто виртуальный метод, тогда класс будет абстрактным и не будет создан, но вы можете реализовать все остальные методы (виртуальные или иные), и наследующие классы смогут получить к ним доступ.

1 голос
/ 12 октября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...