- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
<?php
class A
{
public function TestFunc()
{
var_dump($this);
return $this->test;
}
}
class B
{
public $test;
public function __construct()
{
$this->test = "Nice trick";
}
public function GetTest()
{
return A::TestFunc();
}
}
$b = new B;
echo $b->GetTest();
CkpunmoBbIu_nemyx 06.09.2019 21:23 # 0
AHCKuJlbHblu_nemyx 06.09.2019 21:29 # 0
guest8 06.09.2019 21:35 # −999
guest8 06.09.2019 22:16 # −999
Bmopou_nemyx 06.09.2019 22:41 # 0
guest8 21.09.2019 03:33 # −999
guest8 07.09.2019 03:06 # −999
Bmopou_nemyx 07.09.2019 13:41 # 0
Зачем это всё?
guest8 07.09.2019 13:53 # −999
Bmopou_nemyx 07.09.2019 14:26 # 0
CkpunmoBbIu_nemyx 06.09.2019 21:37 # 0
AHCKuJlbHblu_nemyx 06.09.2019 21:45 # 0
CkpunmoBbIu_nemyx 06.09.2019 21:47 # 0
AHCKuJlbHblu_nemyx 06.09.2019 21:48 # 0
guest8 06.09.2019 21:52 # −999
AHCKuJlbHblu_nemyx 06.09.2019 22:02 # 0
Stallman 06.09.2019 22:08 # 0
guest8 06.09.2019 22:09 # −999
guest8 06.09.2019 22:10 # −999
AHCKuJlbHblu_nemyx 06.09.2019 22:10 # 0
Stallman 06.09.2019 22:12 # 0
guest8 06.09.2019 22:12 # −999
guest8 06.09.2019 22:02 # −999
Bmopou_nemyx 07.09.2019 15:19 # 0
guest8 07.09.2019 15:19 # −999
KOPOBA 07.09.2019 15:20 # 0
Bmopou_nemyx 06.09.2019 21:27 # 0
Pretty_Young_Thing 07.09.2019 04:55 # +1
guest8 07.09.2019 05:00 # −999
Bmopou_nemyx 07.09.2019 12:57 # 0
guest8 07.09.2019 13:40 # −999
cmepmop 07.09.2019 20:56 # 0
guest8 07.09.2019 20:57 # −999
gost 07.09.2019 07:02 # 0
CkpunmoBbIu_nemyx 07.09.2019 12:16 # 0
guest8 07.09.2019 15:21 # −999
Pretty_Young_Thing 07.09.2019 15:27 # −2
guest8 07.09.2019 15:30 # −999
cmepmop 07.09.2019 15:43 # −1
BECEHHEE_O6OCTPEHuE 07.09.2019 15:50 # 0
guest8 07.09.2019 15:52 # −999
cmepmop 07.09.2019 21:56 # 0
Отсылка к сказке про Змея Горыныча?
Минуточку, это не рыцарские доспехи. Конический шлем издревле был у славян, с него соскакивали лезвия. Хм. А меч напоминает греческий.
guest8 07.09.2019 22:21 # −999
guest8 07.09.2019 20:26 # −999
guest8 07.09.2019 20:29 # −999
guest8 07.09.2019 20:30 # −999
guest8 07.09.2019 20:31 # −999
guest8 07.09.2019 21:11 # −999
Bmopou_nemyx 07.09.2019 20:55 # +1
Совместимость: «Трубопаскакаль», «Дельфи», «Фрипаскаль».
Всё работает, всё всем платится:
http://ideone.com/VFOWMv
К сожалению, пришлось наследовать A от B. Можно попытаться без наследования, но тогда код будет совсем царским и сможет в любой момент бабахнуть.
Bmopou_nemyx 07.09.2019 21:00 # 0
С виртуальными была бы жопа: пришлось бы разыскивать метод TestFunc в VMT, а его там у объекта B быть не должно.
cmepmop 07.09.2019 21:14 # −1
guest8 07.09.2019 21:17 # −999
cmepmop 07.09.2019 21:20 # 0
Bmopou_nemyx 07.09.2019 21:38 # 0
https://freepascal.org/docs-html/current/ref/refse31.html
Then the following 3 calls are equivalent:
pp := new (Pobj,Init);
and
new(pp,init);
and also
new (pp);
pp^.init;
В документации по «TP» и по «Delphi» второй параметр тоже упоминался.
cmepmop 07.09.2019 21:53 # 0
Bmopou_nemyx 07.09.2019 21:58 # 0
cmepmop 07.09.2019 22:04 # 0
AHCKujlbHblu_netyx 07.09.2019 22:08 # −1
cmepmop 07.09.2019 22:16 # 0
Каждый класс имеет фабричный метод Creatе, возвращающий ссылку на созданный экземпляр класса с типом TObject. Инициировать объекты как либо иначе запрещено. Если же ты откроешь модуль system.pas, то увидишь, что методы класса TObject "Create" и "Destroy" вообще не реализованы - это тупо сахар.
guest8 07.09.2019 22:20 # −999
cmepmop 07.09.2019 22:21 # 0
guest8 07.09.2019 22:25 # −999
cmepmop 07.09.2019 22:26 # 0
Bmopou_nemyx 07.09.2019 22:31 # 0
В «C++» есть только ключевое слово «class». В «Турбо Паскале» было только ключевое слово «object».
Некоторые программисты словом «класс» называют тип данных, а словом «объект» — конкретный экземпляр класса. Но полагаться на то, что собеседник использует именно такую терминологию, нельзя. Лучше явно уточнять, что имеется в виду тип или экземпляр.
*****
Теперь про слова «class» и «object» в языке «Object Pascal» («Delphi», «Free Pascal»).
Экземпляры объекта, описанного ключевым словом «object» можно создавать в стеке (в области локальных переменных функции), можно в секции данных (в области глобальных переменных) и можно в куче (в этом случае их можно явно уничтожать). Стандартных конструкторов и деструкторов нет, ты их должен объявлять явно. Такие экземпляры можно передавать по значению и по указателю.
Экземпляры объекта, описанного ключевым словом «class», создаются диспетчером памяти стандартной библиотеки (system.pas). Программист не может управлять местом их хранения. Такие объекты в числе своих предков обязательно имеют TObject, поэтому у них всегда есть методы Create и Destroy. Экземпляры же всегда передаются по ссылке — это сахар, который выглядит как значение, но на самом деле является указателем.
guest8 07.09.2019 22:33 # −999
Bmopou_nemyx 07.09.2019 22:36 # 0
guest8 07.09.2019 22:38 # −999
Bmopou_nemyx 07.09.2019 22:43 # 0
Если я правильно понял, в нём объектом называется анонимный класс. Используется, когда нужно объявить и тут же получить экземпляр.
guest8 07.09.2019 22:45 # −999
cmepmop 07.09.2019 22:34 # 0
Но мне интересно, зачем тебе столько петухов, ведь все знают, что за ними один ты.
guest8 07.09.2019 22:27 # −999
cmepmop 07.09.2019 22:29 # 0
guest8 07.09.2019 22:32 # −999
cmepmop 07.09.2019 22:35 # 0
Просто сделай это.
guest8 07.09.2019 21:01 # −999
guest8 07.09.2019 21:03 # −999
Bmopou_nemyx 07.09.2019 21:03 # 0
guest8 07.09.2019 21:18 # −999
cmepmop 07.09.2019 22:36 # 0
guest8 07.09.2019 22:13 # −999
cmepmop 07.09.2019 22:26 # 0
Bmopou_nemyx 07.09.2019 23:01 # +1
Работает:
http://ideone.com/W74P5V
Осталось придумать, что делать, когда есть виртуальные методы.
Bmopou_nemyx 07.09.2019 23:08 # 0
cmepmop 08.09.2019 17:33 # 0
Tpemuu_nemyx 08.09.2019 17:35 # +1
guest8 08.09.2019 17:35 # −999
cmepmop 08.09.2019 17:39 # 0
Rooster 08.09.2019 19:05 # 0
phpBidlokoder2 07.09.2019 22:40 # 0
Именно поэтому я против "PHP"
guest8 21.09.2019 03:34 # −999