BG Development


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

> задача по ООП
PxL
Публикувано на: 11-07-2022, 18:57
Quote Post


Group Icon
Име: Димитър Т. Димитров
Група: VIP
Ранг: Почетен член

Мнения: 3648
Регистриран на: 26.04.05



QUOTE (samolet4e @ 11-07-2022, 16:44)
Ако името на формална променлива от метода съвпада с това на член на класа, тогава (*this). е задължителен. Случаят не е такъв и затова указател this с препратка може да се пропусне.

Имената на заглавния файл и библиотеката не са толкова важни.

Програмата работи, както е показано на конзолата. Цялата задача се свежда до основни операции над вектор.

Молбата ми е ако не си съгласен с нещо в кода да предложиш алтернатива. Полза от твоите съмнения няма.

Въпроса е защо дереференцираш this, не защо го ползваш.

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

Иначе понеже ме помоли, конкретно по кода:
CODE

...
      int fencing, freestyle_swimming, equestrian_show_jumping, pistol_shooting, cross_country_running;
...


Това би могло да бъде в друг вид структура, което ще улесни добавяне на нов вид дисциплина (дори да няма такъв вариант за момента) и би разкарало тези "if/else" блокове. Също добре би било да се отдели от дефиницията за спортист.

Това мнение е било редактирано от PxL на 11-07-2022, 19:03


--------------------
void putchar(char c);int main(){int x,c=1,i;for(i=0;(x="PxLY2H4:2E;7231?=68255A5S5P9N:N9O84111H861I85111G9N:O811O812M<G33911EAEDBECE22169D1=2k"[i+++3]);)while(x-->'0')putchar((!(++c%'('))?0x0a:33^(i&1));}
PMEmail PosterUsers Website
Top
samolet4e
Публикувано на: 17-07-2022, 21:42
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 16
Регистриран на: 16.03.22



Не разбирам въпроса, признавам си. Разбира се, че трябва да дереференсирам указателя, за да прочета съдържанието в паметта на адрес, където указателят посочва. Впрочем този код
CODE

if (str == "fencing") t = (*this).fencing;

е напълно еквивалентен на този
QUOTE

if (str == "fencing") t = this->fencing;

Проблемът е, че оператор -> скрива дереференса и затова използвам по-архаичния и по-ясен вариант (*). Но, както вече написах, в този конкретен случай използването на this е излишно.
PMEmail Poster
Top
DarkOne
Публикувано на: 18-07-2022, 10:14
Quote Post


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

Мнения: 3733
Регистриран на: 30.01.04



QUOTE
оператор -> скрива дереференса
Не знам как го скрива, при положение че този оператор съществува само за да направи дереференциране. Т.е. създаден е специално, за да не се прави (*x).y icon_smile.gif Както и да е, това са дреболии и не си заслужава много да се коментират.


--------------------
The man who learns only what others know
is as ignorant as if he learns nothing.
The treasures of knowledge are the most rare,
and guarded most harshly.
-- Chronicle of the First Age
PMICQ
Top
dvader
Публикувано на: 18-07-2022, 10:20
Quote Post


Group Icon
Име: Валерий Тодоров
Група: VIP
Ранг: Почетен член

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



А някой знае ли изобщо защо е трябвало да бъде именно ->?
Какво е пречило да си се ползва точката за работа с указатели?
В крайна сметка ако се ползва точка с указател или стрелка с не-указател компилатора свири грешка, демек знае разликата.


--------------------
I find your lack of faith disturbing
PM
Top
PxL
Публикувано на: 18-07-2022, 13:57
Quote Post


Group Icon
Име: Димитър Т. Димитров
Група: VIP
Ранг: Почетен член

Мнения: 3648
Регистриран на: 26.04.05



QUOTE (samolet4e @ 17-07-2022, 22:42)
Проблемът е, че оператор -> скрива дереференса и затова използвам по-архаичния и по-ясен вариант (*). Но, както вече написах, в този конкретен случай използването на this е излишно.

Ок по-ясно, въпроса ми е от къде идва информацията, идентифицираща (*). като "по-ясният вариант"?

Тук сме вече малко в офтопик както Дарк отбеляза, така че "feel free" да отговориш, просто любопитство.

Като цяло пропуснах да отбележа, че според мен добре си се справила със задачата и още по-добре, че водиш дискусия по нея icon_smile.gif Ако това в първите мнения е майката и нейното мнение е все още, че "...няма да продължи с програмиране..." определено не съм съгласен, действай смело имаш повече потенциал от голям процент от хората, с които ми се е налагало да работя icon_smile.gif


Това мнение е било редактирано от PxL на 18-07-2022, 14:08


--------------------
void putchar(char c);int main(){int x,c=1,i;for(i=0;(x="PxLY2H4:2E;7231?=68255A5S5P9N:N9O84111H861I85111G9N:O811O812M<G33911EAEDBECE22169D1=2k"[i+++3]);)while(x-->'0')putchar((!(++c%'('))?0x0a:33^(i&1));}
PMEmail PosterUsers Website
Top
DarkOne
Публикувано на: 18-07-2022, 17:03
Quote Post


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

Мнения: 3733
Регистриран на: 30.01.04



QUOTE (dvader @ 18-07-2022, 10:20)
А някой знае ли изобщо защо е трябвало да бъде именно ->?
Какво е пречило да си се ползва точката за работа с указатели?
В крайна сметка ако се ползва точка с указател или стрелка с не-указател компилатора свири грешка, демек знае разликата.

Много добър въпрос, в SO има интересна историческа справка, според която всъщност в началото x->y и (*x).y не са били еквивалентни. Доста интересно четиво какви манджи е можело да се пишат на С icon_smile.gif


--------------------
The man who learns only what others know
is as ignorant as if he learns nothing.
The treasures of knowledge are the most rare,
and guarded most harshly.
-- Chronicle of the First Age
PMICQ
Top
PxL
Публикувано на: 18-07-2022, 18:14
Quote Post


Group Icon
Име: Димитър Т. Димитров
Група: VIP
Ранг: Почетен член

Мнения: 3648
Регистриран на: 26.04.05



мхм

Това мнение е било редактирано от PxL на 18-07-2022, 22:14


--------------------
void putchar(char c);int main(){int x,c=1,i;for(i=0;(x="PxLY2H4:2E;7231?=68255A5S5P9N:N9O84111H861I85111G9N:O811O812M<G33911EAEDBECE22169D1=2k"[i+++3]);)while(x-->'0')putchar((!(++c%'('))?0x0a:33^(i&1));}
PMEmail PosterUsers Website
Top
0 потребители преглеждат тази тема в момента (0 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) 1 [2]  Reply to this topicStart new topicStart Poll

 


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