Энциклопедия C++ Builder




ОБЩИЕ ХАРАКТЕРИСТИКИ - часть 15


TMyCiass myClass;

myClass.DoSomething() ;

Синтаксически приведенная кодовая конструкция сходна с паскалевой. Различие заключается в способе распределения памяти для хранения объекта. Для создания объекта в куче C++ использует оператор new, а для доступа к нему - оператор косвенного членства (->):

TMyCiass* myClass = new TMyCiass;

myClass->DoSomething() ;

delete myClass;

Важно отметить, что если вы можете создавать собственные объекты на стеке или в куче, по своему усмотрению, то объекты VCL (и производные от VCL классов) размещаются только в куче. Поэтому в операциях с объектами VCL всегда используется оператор косвенного членства.

Оператор присваивания в Паскале записывается в виде двоеточия со знаком равенства (: =), а на C++ - это одиночный знак равенства (=). Таким, образом код Delphi:

Label.Top := 20;

должен выглядеть на C++ как:

Label->Top = 20;

Приобретенная в Паскале привычка записи оператора присваивания приводит к раздражающему обилию синтаксических ошибок на C++, впрочем, легко обнаруживаемых компилятором.

Оператор логического равенства в Паскале записывается в виде одиночного знака равенства (=), а на С - это удвоенный знак равенства (==). Таким, образом код Delphi:

if Labell.Text = Label2.Text then

... должен записываться на C++ как:

if (Labell->Text == Label2->Text) { ... } Если вы случайно написали одиночный знак равенства в предыдущей инструкции сравнения, то она будет воспринята как операция присваивания - не совсем так, как вы подразумевали. Предупреждение "Possibly incorrect assignment", которое выдаст компилятор, здесь надо трактовать как ошибку. Вообще следует приучить себя доводить программу до полного отсутствия такого рода предупреждений -неизвестно, к каким последствиям они могут привести.

Одиночные и двойные кавычки служат для обозначения текстовых строк. Код Delphi:

Label. Text := 'Иван Иванов' должен выглядеть на C++ как:

Label->Text = "Иван Иванов";

Это различие будет, вероятно, раздражать вас не меньше, чем разница в записи операторов присваивания. Запутывая ситуацию еще более, C++ также использует одиночные кавычки, но совсем для другой цели.




Содержание  Назад  Вперед