Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сокрытие методов экспортируемого из .dll класса

63K
04 марта 2013 года
SimSonic
16 / / 14.03.2011
Поясню вопрос на абстрактном примере. У меня есть .dll с экспортируемым из неё классом:

Код:
// 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 не в курсе.
};
DIRECTION определяется как экспорт в проекте .dll и как импорт в проекте .exe, к которому подключается эта .dll.

Далее мне кажется, что внесение любых изменений в описании класса со стороны .exe, которые не меняют его структуру, ни к какой катастрофе в принципе не приводит. А именно я просто удаляю прототип функции HiddenMethod, поскольку наличие или отсутствие её прототипа не влияет ни на размер экземпляра класса, ни на таблицу виртуальных методов, т.к. она не виртуальная.

Вопрос: верно ли моё рассуждение?
1
04 марта 2013 года
kot_
7.3K / / 20.01.2000
Методы класса не влияют на размер класса - если функция виртуальная - то она изменяет размер таблицы виртуальных функций. Т.е. рассуждение верное.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог