![]() |
|
|
|
|
#1
|
|||
|
|||
|
Здравствуйте!!! Помогите пожалуйста решить эту проблему. Я объявляю любой класс, и в нем создаю конструктор и деструктор(внутри класса). А проблема в том, что когда я объявляю констр и дестр и запускаю программу оно выд ошибку
Код:
program Project3;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TSumma = Class
private
fx: integer;
fy: integer;
fz: integer;
public
constructor Create;
Destructor Destroy;
end;
var v: Summa;
begin
v:=Summa.Create;// выделяется память для объекта v
Summa.Create;// создается конструктор
// который присваивает значение к полю класса Summa
begin
v.fx:=50;
end;
writeln(v.fx);
end.Последний раз редактировалось Admin, 15.04.2012 в 18:25. |
|
#2
|
||||
|
||||
|
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TSumma = Class
private
fx: integer;
fy: integer;
fz: integer;
public
// constructor Create;
// Destructor Destroy;
end;
var v: TSumma;
begin
v:=TSumma.Create;// выделяется память для объекта v
// Summa.Create;// создается конструктор
// который присваивает значение к полю класса Summa
// begin
v.fx:=50;
// end;
writeln(v.fx);
end. |
|
#3
|
||||
|
||||
|
Так неправильно:
Код:
Destructor Destroy; ... Summa.Create;// создается конструктор Код:
Destructor Destroy; override; ... v:=TSumma.Create;// выделяется память для объекта v |
|
#4
|
|||
|
|||
|
Если убрать слово constructor то она работает. А тогда зачем эти конструкторы деструкторы? Да я понял, что они выделяют память и унижтожают созданный объект.
|
|
#5
|
|||
|
|||
|
их добавить, свои действия при создании/удалении
например написать constructor Create(x, y, z: integer); нажать ctrl+shift+c, и в процедуру вписать fx := x; fy ... fz ... writeln(v.fx); не будет работать, т.к. fx в секции private Последний раз редактировалось Pyro, 16.04.2012 в 08:48. |
|
#6
|
|||
|
|||
|
Код:
program Project3;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
Summa = Class
private
fx: integer;
fy: integer;
fz: integer;
public
constructor Creat;
end;
var v: Summa;
p: integer;
constructor Summa.Creat;
begin
fx:=1;
fy:=2;
fz:=3;
end;
begin
v.fx:=2;
writeln(v.fx);
end.если writeln(v.fx); то она выводит. А разве скрытым полям так можно присваивать? В си++ было по другому же. Там только чз функции обращались скрытым полям. И смотри еще как в теле конструктора я присвоил значение как их можно вывести тогда? Спасибо тебе за ранее)))))))) Последний раз редактировалось Admin, 17.04.2012 в 09:46. |