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

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

Сообщение Anonymous »

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

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

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();
};
(от vcl.controls.hpp, rad Studio 12.2)
В результате, если я объявляю класс, подобный:
class MyControl : public TGraphicControl
{
public:
MyControl(TComponent *Owner);

void __fastcall Paint() override;
};
< /code>
Компилятор выпустит эти предупреждения: < /p>
MyControl.h(18): 'MyControl' overrides a member function but is not marked 'override'
Vcl.Controls.hpp(2642): overridden virtual function is here
< /code>
Странно! Это расширение языка Delphi? И если да, то какая виртуальная функция члена будет генерировать компилятор из виртуального конструктора? Или это просто несоответствие в реализации компилятора?

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

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

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

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

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

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