Вызов виртуальной функции из конструктора

я читаюЭффективный С ++и есть "Пункт 9: Никогда не вызывайте виртуальные функции во время строительства или разрушения »., И я'Мне интересно, если мой код в порядке, даже если он нарушает это правило:

using namespace std;

class A{
    public:
        A(bool doLog){
            if(doLog)
               log();
        }

        virtual void log(){
            cout < "logging A\n";
        }
};


class B: public A{
public:
    B(bool doLog) : A(false){
        if(doLog)
            log();
    }

    virtual void log(){
        cout < "logging B\n";
    }
};


int main() {
    A a(true);
    B b(true);
}

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

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