это неверно

е виртуальные функции - это те функции-члены, которые являются виртуальными и имеютчистый спецификатор ( = 0; )

Пункт 10.4, пункт 2 C ++ 03 говорит нам, что такое абстрактный класс, и, как примечание, следующее:

[Примечание: объявление функции не может предоставить ни чистый спецификатор, ни определение - конечное примечание] [Пример:

struct C {
virtual void f() = 0 { }; // ill-formed
};

- конец примера]

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

Теперь для всех других видов и типов функций разрешено давать определение в классе, и это ограничение кажется на первый взгляд абсолютно искусственным и необъяснимым. Если подумать, это кажется таким на второй и последующие взгляды :) Но я считаю, что ограничения не было бы, если бы не было конкретной причины для этого.

Мой вопрос: кто-нибудьзнать эти конкретные причины?Хорошо догадки также приветствуются.

Заметки:

MSVC позволяет PVF иметь встроенные определения. Так что не удивляйтесь :)словоinline в этом вопросе не относится кв соответствии ключевое слово. Это должно означатьлексически в классе

Ответы на вопрос(5)

Ваш ответ на вопрос