Что такое виртуальные конструкторы Borland C ++?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Что такое виртуальные конструкторы Borland C ++?

Сообщение Anonymous »

Теперь мы знаем, что конструкторы C ++ не могут быть виртуальными. Но сегодня я обнаружил что -то странное: компилятор Borland (BCC64) кажется положительным в отношении виртуальных конструкторов, и на самом деле их библиотека VCL тоже (

Код: Выделить всё

Vcl.Controls.hpp
, Rad Studio 12.2):
class PASCALIMPLEMENTATION TGraphicControl : public TControl
{
typedef TControl inherited;

private:
Vcl::Graphics::TCanvas* FCanvas;
MESSAGE void __fastcall WMPaint(Winapi::Messages::TWMPaint &Message);

protected:
virtual void __fastcall Paint();
__property Vcl::Graphics::TCanvas* Canvas = {read=FCanvas};

public:
__fastcall virtual TGraphicControl(System::Classes::TComponent* AOwner);
__fastcall virtual ~TGraphicControl();
};
< /code>
В результате, если я объявляю класс как: < /p>
class MyControl : public TGraphicControl
{
public:
MyControl(TComponent *Owner);

void __fastcall Paint() override;
};
< /code>
Компилятор выпустит эти предупреждения: < /p>

mycontrol.h(18): 'mycontrol' переопределяет функцию члена но не помечен «переопределение»

vcl.controls.hpp(2642): переопределенная виртуальная функция здесь < /p>
< /blockquote>
Странно! Это расширение языка Delphi? И если да, то какая виртуальная функция члена будет генерировать компилятор из виртуального конструктора? Или это просто несоответствие в реализации компилятора?

Подробнее здесь: https://stackoverflow.com/questions/794 ... nstructors
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»