Болталка PascalABC.NET


#976

А теперь вопрос: по какому поводу сейчас был спор?


#977

На Вас что, полнолуние так действует? Ну ясно же написано было… читайте выше. И что заявлено было, и что я привел в качестве аргумента в возражении. А теперь Вы вдруг спрашиваете о чем речь?


#978

Может быть :smile: У нас тут несколько часов назад уже появлялся лунатик…


#979
"Покойный очнулся и понёс крутой бред"...
(с) (Энциклопедия от митьков)

#980

+1!


#981

Поищите на Cyberforum. Я нашёл следующий ответ:

Конструктор всегда только инициализирует объекты, независимо от языка программирования.

. Еще пример можно найти по следующей ссылке (пост 8):

using System;
 
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var inst = new Asdf(1);
            Console.WriteLine("Init value of A: {0}", inst.A);
            var ctor = typeof(Asdf).GetConstructor(new Type[]{typeof(int)});
            ctor.Invoke(inst, new object[] { 3 });
            Console.WriteLine("New value of A: {0}", inst.A);
            Console.WriteLine("ready");
            Console.ReadKey();
        }
    }
 
    public class Asdf
    {
        public int A { get; set; }
        public Asdf(int a)
        {
            A += a;
        }
 
    }
 
}

. Если бы конструктор создавал новый объект, то вывелись бы два значения: 1 и 3, но никак не 1 и 4. Или, по Вашему конструкторы по-разному работают в разных языках программирования?

Теперь обратимся к Вашему примеру (с комментариями):

type
  Sp=class
  
public

  a:array of integer;
  
  constructor (n:integer);
  begin
    a:=new integer[n];
    a[5]:=55;
  end;
end;

begin
  var x:=new Sp(10); // И что? Как это позволяет доказать то, что именно конструктор создает объект?
                     // Что мешает сказать, что объект создается, а затем инициализируется конструктором?
                     // Убедительная просьба, прорабатывайте примеры перед тем, как выкладывать на форум.
  x.a[5].Println;
end.

.


#982

Можно подумать, что киберфорум - прямо уж такой авторитетный источник информации, просто истина в последней инстанции. Вы видите в тексте то, что хотите увидеть. Другой человек видит другое.

Если речь идет об экземпляре некоторого класса, как об объекте Х, безусловно, конструктор объекта Х не может создать этот объект - чтобы сам конструктор начал работать, объект сначала должен “сесть в память”. Он действительно выполняет работу по его инициализации. Но в процессе этой работы никто не мешает конструктору создавать другие объекты, являющиеся “внутренностью” объекта Х. Поэтому тут уж кто что вкладывает в понятие “конструктор может/не может создавать объект”


#983

Ваша точка зрения, как и моя, не истина в последней инстанции. Я привел доказательство кодом. Именно код доказывает мою точку зрения, в своем большинстве. Ссылки - как дополнительные аргументы. Я предпочитаю оперировать фактами. Если у Вас предпочтения иные, то, извините, Вам тут делать нечего, поскольку для доказательства своих утверждений нужны факты.

Перечитайте текст моего сообщения. Если бы он действительно создавал бы объект, то тогда бы вывод был бы 1 и 3. Либо, если у Вас есть другое объяснение такой работы программы, приведите его, пожалуйста, сюда.


#984

Когда куда-то отсылаете, давайте ссылки, потому что тут имеет место перенос постов, причем иногда с нарушением их последовательности.


#985

По-моему они все-еще находятся в моем посте. Спасибо, конечно, за совет, но все-же он был не к месту.


#986

А зачем мне какие-то сишные программы? Я на чем их запускать должен? Это для Вас С - верх совершенства. А мне с 1973 года он в профессиональной деятельности не понадобился НИ РАЗУ.


#987

Я Вам доказал обратное. Ваше дело принимать этот аргумент или нет.

Аргументы на других языка уже не принимаются? Если это касается личных предубеждений о том, что Си-подобные языки не очень хорошие, то оставьте, пожалуйста их при себе.

Исключительно Ваши проблемы. Нас они не касаются. Запускать можете в: Visual Studio, #Develop. Можете использовать Repl.it, как онлайн среду разработки и в ней запускать. Неумение или нежелание найти онлайн среду разработки или скачать - опять же лично Ваша проблема.


#988

Да ничего Вы мне не доказали. Если объект atray of array, при его создании будет выделена память под ссылки для строк. А каждая строка, которая сама массив будет создаваться (!) конструктором. Это - факт. А у Вас - это игра словами.


#989

У меня доказательство в виде кода. Ваш код ничего не доказывает, так как все-равно не ясно как объект создается. Тем более, кто сказал, что конструктор не может просто инициализировать массив нужным количеством элементов? Из Вашего кода не видно, что объект создается именно конструктором. Виден лишь результат создания объекта и работы конструктора. Если Вы не согласны, то приведите контраргументы в виде кода. Вступать в неконструктивную дискуссию я не собираюсь.


#990

Когда я пишу в конструкторе “new чего-то там”, на уровне исходного языка это создание объекта в конструкторе. Где, как и когда он фактически создается - мне совершенно все равно, это внутренняя кухня реализации.


#991

Я попросил в виде кода доказательство. Код, может доказать или опровергнуть сказанное утверждение.


#992

Пример был, Вы сочли его для себя ничего не говоряшим.


#993

Я объяснил почему. Приведите другой пример.


#994

Понимаете, если Вам заняться больше нечем, кроме как “поговорить” - не все так же время проводят. Посмотрите что делает вызов new и если Вам этого недостаточно, то и говорить не о чем.


#995

По-моему, спор не имеет смысла. Предлагаю забыть про это обсуждение, тем более с переходами на личности.