устранить неиспользуемые виртуальные функции

Для устранения неиспользуемой (обычной) функции я могу использовать: -ffunction-section, -fdata-section и --gc-section. и это работает.

Я знаю, что используя полиморфизм, функцияпозднее связывание» поэтому я полагаю, что нет способа решить, какую функцию можно удалить в процессе связывания.

Но я использую чисто виртуальную функцию, чтобы заставить класс, который наследует, реализовать какую-то функцию. Затем в коде я использую объекты (не указатель / ссылку на объект, поэтому я не использую полиморфизм).

псевдокод:

class BASE {
    ...
    virtual void do_sth() = 0;
    virtual void do_sth_else() = 0;
    ...
};

class C1 : BASE {
    ...
    void do_sth() { //some code }
    void do_sth_else() { //some code }
}

main()
{
    //the do_sth_else function is never used in main
    C1 obj1;
    obj.do_sth();
}

Есть ли какой-нибудь метод устранения этой неиспользуемой функции (do_sth_else) во время процесса связывания? Может я что то не так понял. и поэтому я думаю, что должен быть способ удалить эту неиспользуемую функцию. Если да, пожалуйста, объясните мне, почему, когда я НЕ использую указатели с виртуальной функцией, нет никакого способа "Избавиться" полиморфных накладных расходов. :)

К вашему сведению: этот код предназначен в основном для целей обучения.

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

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