Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Hed-kun

Программирование, т. 5.1.

Рекомендованные сообщения

Вообще, это не то что должно парить при нормальном дизайне. ( + в нашем примере при наследовании от noncopyable у тебя нету конструктора, ты присто добавляешь компайлтайм чек)

 

А так, вот выдержка

  • Constructors are called in the order you write them down (first base class in the list is constructed first) (§12.6.2.10). Different rules apply to virtual base classes which are always constructed from the most-derived class before any direct base classes.

Твой класс будет работать, только ты не сможешь использовать функционал, вызывающий копирование именно Этого класса.

ну то-есть код, где будет что-то вроде этого public class A: B, nocopy, deepcopy просто не скомпилится?

конструктор копирования ведет себя как и любой (если я не задал конструктор копирования - то у наследника его тоже нельзя будет задать или же если я удалил конструктор копирования - то и у наследника я его создать не смогу)

Блять , в рот ебал эту пд. Создайте уже новый тред, а то этому пизда

 

Короч, кусок кода лучше тысячи объяснений

http://ideone.com/nMgblZ

Поделиться сообщением


Ссылка на сообщение

Короч, кусок кода лучше тысячи объяснений

http://ideone.com/nMgblZ

лол :) я же про другое спрашивал


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение
(изменено)

я же привел пример:

http://www.boost.org...noncopyable.hpp

 

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

Схуяли это майкрософты сейчас овердохуя работы в плюсы вбрасывают? Да и почему бы не написать какую-нибудь нормальную ОС на жаве?

И странно, что стандартом выбора для перформанс критикал кода стали плюсы, а для стабильных систем жабы хуябы?

Короче, нехуй лезть в чужой монастырь со своим уставом.

Я же не кричу посвюду что C# говно, только потому что мне жава больше понравилась. Нет, я просто пишу на нем тихо, потому что он более подходит для структуры организации в которой я выполняю работу, и все.

И вам того же советую.

какая-то дичь. что будет, если я перегружу этот оператор в другом классе, от которого наследуюсь? что будет, если перегружу в свмом классе?

ну как бы на крестах операционки тоже не пишут. пишут на сях.

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

ну и ты потерял контекст. контекст был такой, что человек сделал утверждение: жава лучше для изучения ООП потому, что жава полностью объектно ориентированная.

какой-то чувак написал, что кресты в большей мере поддерживает ооп стандарты (лол. ооп стандарты) потому что там есть множественное наследование.

дальше я написал, что ни один из столпов ооп не требует множественного наследования. так же написал, что это взрыв мозга и вообще это ошибка, как например жаваскрипт или пхп

 

 

ебучая пд. не смог отредоктировать

 

Какой оператор? Ты о чем? если о boost::noncopyable ты просто убиваешь конструктор копирования, и оператор присваивания, что не позволяет тебе копировать этот класс.

я с крестами в последний раз имел дело еще в универе.

почему я не могу это всё определить в самом классе?

ты изначально контекст не понял. я говорил изучать ооп (в теории, ибо это же чисто теоретическое понятие, парадигма жи), и изучать с++ как всесторонний язык

затем мое покритиковали сказав что лучше джаву

затем я сказал что джава кастрированный язык


Изменено пользователем Just.Doit

 

очень крутые котейки

RqvSzvr.png


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение

Короч, кусок кода лучше тысячи объяснений

http://ideone.com/nMgblZ

лол :) я же про другое спрашивал

Ну то что я написал дожно дать представление о том как это работает, т.к. мне кажется ты немного не понимаешь.

 

А в твоем куске кода - чего ты хочешь добиться наследованием от deep copy и nocopy одновременно?

за что отвечает deepcopy? как он получает доступ к полям базового класса и что он делает?

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

Если deepcopy реализует метод, который копирует наследника, но констукторы копирования удалены - то будет ошибка в этом месте.

Если deepcopy реализует метод, который копирует другой базовый класс, в котором есть конструктор копирования - то все будет работать.

Или я просто не понимаю твоего вопроса.

Поделиться сообщением


Ссылка на сообщение
ты изначально контекст не понял. я говорил изучать ооп (в теории, ибо это же чисто теоретическое понятие, парадигма жи), и изучать с++ как всесторонний язык

затем мое покритиковали сказав что лучше джаву

затем я сказал что джава кастрированный язык

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

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

если же изучать именно ООП (у меня в универе ООП именно на крестах было после семестра си) - то тут либо жава либо шарп.


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

^

Каждое слово верно

Поделиться сообщением


Ссылка на сообщение

Короч, кусок кода лучше тысячи объяснений

http://ideone.com/nMgblZ

лол :) я же про другое спрашивал

Ну то что я написал дожно дать представление о том как это работает, т.к. мне кажется ты немного не понимаешь.

 

А в твоем куске кода - чего ты хочешь добиться наследованием от deep copy и nocopy одновременно?

за что отвечает deepcopy? как он получает доступ к полям базового класса и что он делает?

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

Если deepcopy реализует метод, который копирует наследника, но констукторы копирования удалены - то будет ошибка в этом месте.

Если deepcopy реализует метод, который копирует другой базовый класс, в котором есть конструктор копирования - то все будет работать.

Или я просто не понимаю твоего вопроса.

ну тут дипкопи - это тупой пример, который наверное ничего общего не имеет с крестами, т.к. там нет рефлексии.

если бы она там была - то он копировал бы экземпляр класса не по ссылке (ссылкам), а по значению.

суть в том, что в одном классе ты создаешь конструктор копирования, а в другом удаляешь. (лол в шарпе даже такого нет. ты конструктор либо создаешь, либо создаешь по умолчанию, либо просто прячешь за прайватом, протектедом за наследованием и дальше наследники могут оказаться в ситуации, когда не может быть конструкторов вообще).

вот мне интересно, если я в классе удалю конструктор копирования и от него унаследуюсь - то наследник перед тем, как дернет конструктор по умолчанию или же просто не скомпилируется?


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

вообще я рад что топик превратился из "помогите найти ошибку в пятой строке моего говнокода для говнолабы в говноунивере" в обсуждение чего-то стоящего :)


 

очень крутые котейки

RqvSzvr.png


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение

Короч, кусок кода лучше тысячи объяснений

http://ideone.com/nMgblZ

лол :) я же про другое спрашивал

Ну то что я написал дожно дать представление о том как это работает, т.к. мне кажется ты немного не понимаешь.

 

А в твоем куске кода - чего ты хочешь добиться наследованием от deep copy и nocopy одновременно?

за что отвечает deepcopy? как он получает доступ к полям базового класса и что он делает?

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

Если deepcopy реализует метод, который копирует наследника, но констукторы копирования удалены - то будет ошибка в этом месте.

Если deepcopy реализует метод, который копирует другой базовый класс, в котором есть конструктор копирования - то все будет работать.

Или я просто не понимаю твоего вопроса.

ну тут дипкопи - это тупой пример, который наверное ничего общего не имеет с крестами, т.к. там нет рефлексии.

если бы она там была - то он копировал бы экземпляр класса не по ссылке (ссылкам), а по значению.

суть в том, что в одном классе ты создаешь конструктор копирования, а в другом удаляешь. (лол в шарпе даже такого нет. ты конструктор либо создаешь, либо создаешь по умолчанию, либо просто прячешь за прайватом, протектедом за наследованием и дальше наследники могут оказаться в ситуации, когда не может быть конструкторов вообще).

вот мне интересно, если я в классе удалю конструктор копирования и от него унаследуюсь - то наследник перед тем, как дернет конструктор по умолчанию или же просто не скомпилируется?

Есть дипкопи и в плюсах. Когда хранишь указатели вместо значений.

В плюсах тоже можно прятать. Но еще можно было просто декларировать и не имплементировать, поэтому ты можешь запретить его вызов даже из самого класса изнутри.

Если удалишь констуктор, но наследних его будет пытаться вызывать - то не скомпилируется. Дефолтный конструктор копирования это и попытается сделать.

Я тебе это и показал в коде на примере derived1. в derived2 это обошел.

Поделиться сообщением


Ссылка на сообщение

Есть дипкопи и в плюсах. Когда хранишь указатели вместо значений.

В плюсах тоже можно прятать. Но еще можно было просто декларировать и не имплементировать, поэтому ты можешь запретить его вызов даже из самого класса изнутри.

Если удалишь констуктор, но наследних его будет пытаться вызывать - то не скомпилируется. Дефолтный конструктор копирования это и попытается сделать.

Я тебе это и показал в коде на примере derived1. в derived2 это обошел.

ну так же скопируются указатели? суть в том, что в шарпе (в жаве наверное так же) твой класс компилируется в тайпобжект. и по сути через рефлексию ты по типу можешь получить все его члены (members: филды, проперти, методы и конструкторы). соответственно ты в рантайме можешь получить информацию о типе и создать этот тип, даже если он не предоставляет интерфейса для своего создания ну или у существующего экземпляра скопировать все филды. в шарпе если что и intellisence работает через рефлексию в студии.

ну тут кстати и ответ на мой вопрос: является ли конструктор копирования чем-то специфичным


Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

Есть дипкопи и в плюсах. Когда хранишь указатели вместо значений.

В плюсах тоже можно прятать. Но еще можно было просто декларировать и не имплементировать, поэтому ты можешь запретить его вызов даже из самого класса изнутри.

Если удалишь констуктор, но наследних его будет пытаться вызывать - то не скомпилируется. Дефолтный конструктор копирования это и попытается сделать.

Я тебе это и показал в коде на примере derived1. в derived2 это обошел.

ну так же скопируются указатели? суть в том, что в шарпе (в жаве наверное так же) твой класс компилируется в тайпобжект. и по сути через рефлексию ты по типу можешь получить все его члены (members: филды, проперти, методы и конструкторы). соответственно ты в рантайме можешь получить информацию о типе и создать этот тип, даже если он не предоставляет интерфейса для своего создания ну или у существующего экземпляра скопировать все филды. в шарпе если что и intellisence работает через рефлексию в студии.

ну тут кстати и ответ на мой вопрос: является ли конструктор копирования чем-то специфичным

Дефолтный конструктор копирования вызовет копирование для всех полей поочереди. Если это поинтер - то скопирует поинтер. Никто не мешает написать свой вариант, и для дипкопи просто одну строчку использовать

field_ptr = new Field(*other.field_ptr);

что вызовет конструктор копирования для этого типа

 

В курсе я как работает рефлекшн, благо не на одних плюсах писал.

Только не стоит забывать что все что есть в шарпах и жавах в том или ином виде было есть и будет в плюсах :)

Поделиться сообщением


Ссылка на сообщение

Только не стоит забывать что все что есть в шарпах и жавах в том или ином виде было есть и будет в плюсах :)

что насчет нормального интеллисенса хоть в каком-то иде? :)

Колы я выросту - то хочу буты такым як я

5c8bbc85b99e.gif

 

годные смайлы

Поделиться сообщением


Ссылка на сообщение

Только не стоит забывать что все что есть в шарпах и жавах в том или ином виде было есть и будет в плюсах :)

что насчет нормального интеллисенса хоть в каком-то иде? :)

Говорят получше стал в последней вижле.

Еще слышал что ХКоде с этим все нормально + реалтайм компиляция с клангом. Правда не проверял пока, времени нету.

 

А так со времен вс2008 - VisualAssistX. Меня вполне устраивает. А учитывая что я пират, то вообще бесплатен для моих скромных нужд.

 

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

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...