214 похожих чатов

Зачем в Java и C# нужен оператор new, если там

все объекты ссылочные?

94 ответов

212 просмотров

Как одно с другим связано? Я рил не понимаю

Не все

Серый-MLGamer Автор вопроса

И в Java?

Серый-MLGamer Автор вопроса

Какие?

Оператор NEW создает новый экземпляр класса. Ты можешь через этот оператор создать 3 обьекта и они будут различные между собой.

Для этого и нужен, что бы создавать новый экземпляр объекта, а не присваивать ссылку на существующий

Серый-MLGamer Автор вопроса
T::Dïmä <🐿>
Как одно с другим связано? Я рил не понимаю

Потому что если все объекты ссылочные, то другой способ вызова конструктора не нужен. Значит, в new нет необходимости. А в C++ и (по странным обстоятельствам) в JavaScript они нужны.

Серый MLGamer
Потому что если все объекты ссылочные, то другой с...

В Java есть примитивы, которые не являются объектом

Серый MLGamer
Прям конструкторы?

я не понимаю про что ты говоришь

Серый-MLGamer Автор вопроса
Nikolay Desyatkov
в жс можно объекты создавать и без new

А, ты про JS. Я про Java в этот момент думал.

Серый MLGamer
Потому что если все объекты ссылочные, то другой с...

Там через new ты конструктор нужный или дефолтный вызываешь типа

Серый MLGamer
А, ты про JS. Я про Java в этот момент думал.

Ну дамал, про джаву, написал про джаваскрипт :D

Серый-MLGamer Автор вопроса
Серый-MLGamer Автор вопроса
T::Dïmä <🐿>
Да

То есть это вот такая внезапная почти нативная вставка в ядро языка для увеличения производительности на полшишечки?

Серый MLGamer
То есть это вот такая внезапная почти нативная вст...

Я думаю что это просто наследие. В дарте можно делать var c = Client()

Серый MLGamer
В Python тоже.

Ну питон никогда и не был сиподобным языком

Серый-MLGamer Автор вопроса
Nikolajs Djačenko
Ну питон никогда и не был сиподобным языком

Модный, современный, стильный, молодой язык программирования!

Серый-MLGamer Автор вопроса
Серый MLGamer
Модный, современный, стильный, молодой язык програ...

Хоть и сделан давно, выглядит до сих пор футуристично!

Андрей
Оператор NEW создает новый экземпляр класса. Ты мо...

Он и не только для этого служит, ещё можно делать сокрытие с помощью NEW

Серый MLGamer
Модный, современный, стильный, молодой язык програ...

Не молодой . Просто начал популярность набирать сейчас

Почему внезапная? Почему на полшишечки, лол.

А как создать объект без new? Чисто из любопытства не делал так ни разу

В F# let a = A() Конструктор, это функция, которая возвращает объект.

Серый-MLGamer Автор вопроса

Потому что сравниваю с Java. Ну и, как бы, зачем ещё тогда нужны структуры в C#, если есть классы?

А в С#

Серый-MLGamer Автор вопроса
Denys Popovych
Где нужна производительность

А что, C# - не Java? Там есть производительность?

Есть такое понятие, как мемори трафик. Сборка мусора -- длительная операция, можно её избежать, если не создавать объекты, а выделять их на стене.

Да, C# -- не джава

Зато есть Customer c = new()

Это полезно только в пропертях

Есть ещё stackalloc

Серый-MLGamer Автор вопроса

Ну, в C можно вообще до Берлина дойти в памяти. Можно, думаю, даже комп положить (пока не получалось - маленькие массивы).

поэтому на си всё подряд и не пишут

пишут, вон руби написали ж

Эээ! Епты бля, тебе там привет от лиоса товра!

Серый MLGamer
Потому что если все объекты ссылочные, то другой с...

Есть такая вещь как 'исторически сложилось', вот это один из примеров

Серый-MLGamer Автор вопроса
Ilya
Есть такая вещь как 'исторически сложилось', вот э...

Вот в C++, главное, всё нужно и имеет пользу, а в Java... Зачем нужны интерфейсы, если есть виртуальные функции в классах?

Серый-MLGamer Автор вопроса
Серый MLGamer
Вот в C++, главное, всё нужно и имеет пользу, а в ...

Внимание: нажатие на ответ откинет вас на 300 сообщений.

Серый MLGamer
Вот в C++, главное, всё нужно и имеет пользу, а в ...

А интерфейсы это контракты, выделенные синтаксически

Ты выше писал, что new в C++ не нужно и не имеет смысла

Серый-MLGamer Автор вопроса

Я писал, что new не имеет смысла в Java. В C++ new имеет конкретный смысл создания ссылочных объектов вместо обычных.

Ну, ты сказал, что в new нет необходимости

Серый-MLGamer Автор вопроса

Это тоже про Java. Я как-то там не так сказал?

Серый MLGamer
Я писал, что new не имеет смысла в Java. В C++ new...

За new в С++ коде по ебучке от лида получить можно кста

Да, ты сказал про джаву. Я добавляю, что не только для джавы. Но это уже by-design

Вообще это байт был

(:

Я вот в школе тоже думал, что сисиплюс самый сложный, а значит самый крутой

Серый-MLGamer Автор вопроса

А сейчас Java мне кажется сложнее.

Я в школе шароёбился и на девок смотрел вообще

Ну, нет

Лучше бы ты сейчас на девок смотрел

))))

Ассемблер круче значит

Серый-MLGamer Автор вопроса

Ну, вроде, тоже взобрался. Но вдруг меня впечатлил Kotlin. Сейчас у меня проблема со статическими членами.

котлин крута

Серый-MLGamer Автор вопроса

В совершенстве реализован паттерн Singleton!

Серый-MLGamer Автор вопроса
Серый MLGamer
В совершенстве реализован паттерн Singleton!

Никогда таким не пользовался, и вот опять. Статическими классами всегда пользовался.

Серый-MLGamer Автор вопроса

Ну, подумаешь, нужно перед каждой функцией virtual писать. Но зато можно определить функцию по умолчанию! Прям как в каком-то новом C#. И экземпляры этого класса создавать.

» Прям как в каком-то новом C# ну и это не хорошо

Серый-MLGamer Автор вопроса

Вот то, что действительно плохо, это возможность создания экземпляров. Если не пропишешь в документации, ошибку увидишь, когда говно попадёт на вентилятор.

создание экземпляров чего?

Серый-MLGamer Автор вопроса

Класса с виртуальными функциями.

это не класс с виртуальными функциями, а реализация интерфейса

Серый-MLGamer Автор вопроса

Реализация интерфейса - это обходы этих виртуальных функций.

почитай про интерфейсы, пожалуйста

Серый-MLGamer Автор вопроса

А как ещё интерфейсы наследуются? Разве не так, как я написал?

Серый-MLGamer Автор вопроса

Невиртуальные методы при апкасте никак не меняются.

они и не меняются, потому что у методов интерфейса в дефолтном варианте НЕТ реализации, единственная реализация есть в классе реаоизации, которая тоже не виртуальная.

Щас на тебя дефолтная реализация интерфейса обиделась

не юзаю

Vlad Doc
За new в С++ коде по ебучке от лида получить можно...

ого, я плюсы дальше универа не изучал, как там надо чтобы по красоте было?

Vlad Doc
auto a = std::make_unique<A>(42);

в скобках аргументы конструктора, я правильно понял?

Похожие вопросы

Обсуждают сегодня

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Карта сайта