// myclass.hpp
class DIRECTION CMyClass
{
private:
void HiddenMethod(char * pString);
public:
void DoSomething1();
int DoSomething2(int a, int b);
};
// myclass.cpp (компилируется в .dll)
void CMyClass::HiddenMethod(char * pString)
{
// Тайная работа метода
};
void CMyClass::DoSomething1()
{
// тоже что-то происходит
HiddenMethod();
};
int CMyClass::DoSomething2(int a, int b)
{
HiddenMethod();
return a + b;
};
// application.cpp
void main()
{
CMyClass object; // В данном контексте никто и ничего про HiddenMethod не в курсе.
};
Сокрытие методов экспортируемого из .dll класса
Код:
Далее мне кажется, что внесение любых изменений в описании класса со стороны .exe, которые не меняют его структуру, ни к какой катастрофе в принципе не приводит. А именно я просто удаляю прототип функции HiddenMethod, поскольку наличие или отсутствие её прототипа не влияет ни на размер экземпляра класса, ни на таблицу виртуальных методов, т.к. она не виртуальная.
Вопрос: верно ли моё рассуждение?
Методы класса не влияют на размер класса - если функция виртуальная - то она изменяет размер таблицы виртуальных функций. Т.е. рассуждение верное.