BG Development


Страници: (4) « първа ... 2 3 [4]   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Наследяване в C++
dvader
Публикувано на: 07-02-2024, 07:07
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 5208
Регистриран на: 12.07.05



QUOTE (Дон Реба @ 06-02-2024, 22:57)
вероятно писачи на С++ опитващи да пишат на С. ако тръгнеш да превеждаш буквално С++ на С лесно ще докажеш С++ превъзходство, но нативен С писач няма никога да попълва виртуални таблици.

Егати, ти току що кръвно обиди Линус Торвалдс.
От друга страна, съдейки по това как той хейти С++ то най-вероятно е латентен писач на С++.


--------------------
I find your lack of faith disturbing
PM
Top
Дон Реба
Публикувано на: 07-02-2024, 08:18
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 10205
Регистриран на: 11.11.06



не съм запознат с творчеството на торвалдс, но ако човек иска да пише С++ стил на чисто С имплементацията на конструктора не е проблем, с всичките му функции, вкл и попълването на таблицата. ще кажеш "да ама попълваш на ръка и може да сбъркаш" - риска не е по-голям от този да сбъркаш една буква в името на функцията при овъррайд и пак да се преебеш, нали затова вече сложиха override декларация. ти няма да я попълваш като tbl[0]=OnMouseMove; tbl[1]=OnKeyDown; а си правиш инициализираща функция която изисква аргументи от тип функция , например CreateWnd(VFUN1PTR vf1,VFUN2PTR vf2....)
това е по-надеждно дори от стандартния С++ подход.
PM
Top
bvbfan
Публикувано на: 07-02-2024, 08:54
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 4126
Регистриран на: 08.12.13



QUOTE (Дон Реба @ 06-02-2024, 09:03)
мен отдавна ми е през кура за сякакви патерни матерни и ооп богоугодни техники. ооп феновете губят 90% от времето си да мислят как да не влязат в ерес, а останалите 10% спорят с други ооп фенове дали няква практика е ерес или е богопомазана. ако ми кажат имаш право на ЕДНО нещо от С++ без колебание вземам деструкторите, заради RAII. всичко останало там унаследявания, виртуални функции и ала бала се прави, ама виж RAII не можеш да си направиш по никакъв начин ако нямаш деструктори.

Общо взето на всички е през там. Но всичко, което пишем на С++, може да се реализира на С и на асемблер. GTK отдавна ползват RAII просто използват макроси и специфични за компилатора методи за извикване на функция, когато се излезе от текущият обхват.


--------------------
QUOTE (Bender @ 23-04-2015, 19:11)
Xamarin: ЛАПАЙ!
Ти: Добре...
PMEmail Poster
Top
Дон Реба
Публикувано на: 07-02-2024, 09:21
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 10205
Регистриран на: 11.11.06



QUOTE (bvbfan @ 07-02-2024, 08:54)
GTK отдавна ползват RAII просто използват макроси и специфични за компилатора методи за извикване на функция, когато се излезе от текущият обхват.

отвори ми любопитството, дай някакъв детайл?
PM
Top
bvbfan
Публикувано на: 07-02-2024, 16:25
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 4126
Регистриран на: 08.12.13





--------------------
QUOTE (Bender @ 23-04-2015, 19:11)
Xamarin: ЛАПАЙ!
Ти: Добре...
PMEmail Poster
Top
dvader
Публикувано на: 07-02-2024, 18:03
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 5208
Регистриран на: 12.07.05



QUOTE (bvbfan @ 07-02-2024, 16:25)
https://docs.gtk.org/glib/auto-cleanup.html

Ееее, ма това е чийт - ползват някакви gcc-specific неща... така и баба знае icon_smile.gif

Какви ли извращения не правят хората, само и само да не пишат на С++.

Това мнение е било редактирано от dvader на 07-02-2024, 18:04


--------------------
I find your lack of faith disturbing
PM
Top
bvbfan
Публикувано на: 07-02-2024, 18:17
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 4126
Регистриран на: 08.12.13



QUOTE (dvader @ 07-02-2024, 18:03)
QUOTE (bvbfan @ 07-02-2024, 16:25)
https://docs.gtk.org/glib/auto-cleanup.html

Ееее, ма това е чийт - ползват някакви gcc-specific неща... така и баба знае icon_smile.gif

Какви ли извращения не правят хората, само и само да не пишат на С++.

И clang ги поддържа, а още по-доброто е, че gcc го има почти навсякъде, arm, embedded. Направил си го за gcc като portable е.


--------------------
QUOTE (Bender @ 23-04-2015, 19:11)
Xamarin: ЛАПАЙ!
Ти: Добре...
PMEmail Poster
Top
SuN
Публикувано на: 07-02-2024, 20:28
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 12805
Регистриран на: 27.01.05



Това е от библиотеката GLib (Gtk разчита на нея), но може да се ползва директно със синтаксиса на GCC:
QUOTE
cleanup (cleanup_function)
    ....
    If -fexceptions is enabled, then cleanup_function is run during the stack unwinding that happens during the processing of the exception. Note that the cleanup attribute does not allow the exception to be caught, only to perform an action. It is undefined what happens if cleanup_function does not return normally.

"https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html"

Честно казано досега си мислех, че масово в Gtk се ползва ръчно броене на обектите. От последната ми програма за лично ползване (около 300 реда) намерих следното:
CODE
 ~Class1 ()
 {
   // коментар как функцията не работи без изключване на оптимизациите и ми седи като проблем
   free (c);
   if (label)
     g_object_unref (label); // <- имам g_object_ref (label) в конструктора

   c = nullptr;
   label = nullptr;
 }


Това мнение е било редактирано от SuN на 07-02-2024, 20:34


--------------------
Само аз не троля.
Всички коментари са плод на художествена измислица и нямат общо с действителни и недействителни лица, събития и факти.
PMEmail Poster
Top
Дон Реба
Публикувано на: 07-02-2024, 20:58
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 10205
Регистриран на: 11.11.06



ами това само потвърждава думите ми - ако има едно нещо което трябва да изберем, деструкторите са фаворит!
PM
Top
SuN
Публикувано на: 08-02-2024, 01:01
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 12805
Регистриран на: 27.01.05



QUOTE (dvader @ 06-02-2024, 15:30)
... Затова им се чудя на всичките тия дето правят ООП на чисто С... ...

Мразят С++. Ето, Линус и компания (we) например преминават от С на Rust:
QUOTE
we don't even write assembler and now we're moving on from C to Rust

https://www.youtube.com/watch?v=VHHT6W-N0ak (време 1:04) ((Преписал съм субтитрите, защото нямам звук))

Успях да го изгледам след 20 дена престой в табовете, тамън навреме да напиша опорната си точка. icon_smile.gif Браузърите трябва да почнат да раздават някакви точки за постижения.

Това мнение е било редактирано от SuN на 08-02-2024, 01:03


--------------------
Само аз не троля.
Всички коментари са плод на художествена измислица и нямат общо с действителни и недействителни лица, събития и факти.
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (4) « първа ... 2 3 [4]  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0