все объекты ссылочные?
Как одно с другим связано? Я рил не понимаю
Не все
И в Java?
Какие?
Оператор NEW создает новый экземпляр класса. Ты можешь через этот оператор создать 3 обьекта и они будут различные между собой.
struct
Для этого и нужен, что бы создавать новый экземпляр объекта, а не присваивать ссылку на существующий
Потому что если все объекты ссылочные, то другой способ вызова конструктора не нужен. Значит, в new нет необходимости. А в C++ и (по странным обстоятельствам) в JavaScript они нужны.
в жс можно объекты создавать и без new
Прям конструкторы?
В Java есть примитивы, которые не являются объектом
Ну так жс на прототипах сидит
я не понимаю про что ты говоришь
не в этом дело
А, ты про JS. Я про Java в этот момент думал.
Там через new ты конструктор нужный или дефолтный вызываешь типа
Ну дамал, про джаву, написал про джаваскрипт :D
В C#?
То есть это вот такая внезапная почти нативная вставка в ядро языка для увеличения производительности на полшишечки?
Я думаю что это просто наследие. В дарте можно делать var c = Client()
Ну питон никогда и не был сиподобным языком
Модный, современный, стильный, молодой язык программирования!
Хоть и сделан давно, выглядит до сих пор футуристично!
Он и не только для этого служит, ещё можно делать сокрытие с помощью NEW
Не молодой . Просто начал популярность набирать сейчас
Интересно есть ли олды питона которые на нем с 90-2000 пишут
Почему внезапная? Почему на полшишечки, лол.
А как создать объект без new? Чисто из любопытства не делал так ни разу
В F# let a = A() Конструктор, это функция, которая возвращает объект.
Потому что сравниваю с Java. Ну и, как бы, зачем ещё тогда нужны структуры в C#, если есть классы?
Где нужна производительность
А в С#
А что, C# - не Java? Там есть производительность?
Есть такое понятие, как мемори трафик. Сборка мусора -- длительная операция, можно её избежать, если не создавать объекты, а выделять их на стене.
C# не Java уже лет как 18
Да, C# -- не джава
Зато есть Customer c = new()
Это полезно только в пропертях
Есть ещё stackalloc
Ну, в C можно вообще до Берлина дойти в памяти. Можно, думаю, даже комп положить (пока не получалось - маленькие массивы).
поэтому на си всё подряд и не пишут
пишут, вон руби написали ж
Эээ! Епты бля, тебе там привет от лиоса товра!
Есть такая вещь как 'исторически сложилось', вот это один из примеров
Вот в C++, главное, всё нужно и имеет пользу, а в Java... Зачем нужны интерфейсы, если есть виртуальные функции в классах?
Внимание: нажатие на ответ откинет вас на 300 сообщений.
А интерфейсы это контракты, выделенные синтаксически
Ты выше писал, что new в C++ не нужно и не имеет смысла
Я писал, что new не имеет смысла в Java. В C++ new имеет конкретный смысл создания ссылочных объектов вместо обычных.
Ну, ты сказал, что в new нет необходимости
Это тоже про Java. Я как-то там не так сказал?
За new в С++ коде по ебучке от лида получить можно кста
Да, ты сказал про джаву. Я добавляю, что не только для джавы. Но это уже by-design
Я пока учусь в школе.
Вообще это байт был
(:
Я вот в школе тоже думал, что сисиплюс самый сложный, а значит самый крутой
А сейчас Java мне кажется сложнее.
Я в школе шароёбился и на девок смотрел вообще
Ну, нет
Лучше бы ты сейчас на девок смотрел
))))
Ассемблер круче значит
Ну, вроде, тоже взобрался. Но вдруг меня впечатлил Kotlin. Сейчас у меня проблема со статическими членами.
котлин крута
В совершенстве реализован паттерн Singleton!
Никогда таким не пользовался, и вот опять. Статическими классами всегда пользовался.
Ну, подумаешь, нужно перед каждой функцией virtual писать. Но зато можно определить функцию по умолчанию! Прям как в каком-то новом C#. И экземпляры этого класса создавать.
» Прям как в каком-то новом C# ну и это не хорошо
Вот то, что действительно плохо, это возможность создания экземпляров. Если не пропишешь в документации, ошибку увидишь, когда говно попадёт на вентилятор.
создание экземпляров чего?
Класса с виртуальными функциями.
это не класс с виртуальными функциями, а реализация интерфейса
Реализация интерфейса - это обходы этих виртуальных функций.
почитай про интерфейсы, пожалуйста
А как ещё интерфейсы наследуются? Разве не так, как я написал?
Невиртуальные методы при апкасте никак не меняются.
они и не меняются, потому что у методов интерфейса в дефолтном варианте НЕТ реализации, единственная реализация есть в классе реаоизации, которая тоже не виртуальная.
Щас на тебя дефолтная реализация интерфейса обиделась
не юзаю
ого, я плюсы дальше универа не изучал, как там надо чтобы по красоте было?
auto a = std::make_unique<A>(42);
в скобках аргументы конструктора, я правильно понял?
Обсуждают сегодня