«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как добиться C++-эквивалента оператора экземпляра Java в Java?

Как добиться C++-эквивалента оператора экземпляра Java в Java?

Опубликовано 17 ноября 2024 г.
Просматривать:512

How to Achieve the C   Equivalent of Java\'s \

Как достичь C-эквивалента экземпляра экземпляра Java в Java

В Java оператор «instanceof» позволяет определить, принадлежит ли объект объекту конкретный класс или интерфейс. В C существует несколько методов достижения этой функциональности.

Динамическое приведение с RTTI

Один из подходов — использование динамического приведения с включенной информацией о типе времени выполнения (RTTI). Для этого необходимо включить необходимые заголовки:

#include 
#include 

И затем вы можете выполнить динамическое приведение, используя:

if(NewType* v = dynamic_cast(old)) {
   // old was safely casted to NewType
   v->doSomething();
}

Обратите внимание, что этот подход требует, чтобы в вашем компиляторе была включена поддержка RTTI.

Виртуальные функции

Другой метод — использовать виртуальные функции. Вы можете определить виртуальную функцию в базовом классе и переопределить ее в производных классах. Затем вы можете проверить динамический тип объекта, вызвав его виртуальную функцию:

class Base {
public:
    virtual void doSomething() {}
};

class Derived : public Base {
public:
    void doSomething() override {}
};

...

if(auto* derived = dynamic_cast(old)) {
    derived->doSomething();
}

Переключение типа

Наконец, вы можете использовать переключатель типа для определения динамического типа объекта. Этот подход основан на классе type_info:

if(old.IsSameAs(typeid(NewType))) {
    // old was safely casted to NewType
    NewType* v = static_cast(old);
    v->doSomething();
}

Соображения

Хотя эти методы предлагают функциональные возможности, аналогичные Java-оператору "instanceof", важно помнить, что динамическое приведение типов и проверка типов могут привести к снижению производительности. Рекомендуется рассмотреть возможность использования альтернативных подходов, таких как виртуальные функции или переключатели типов, для повышения производительности в критически важных приложениях.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3