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

Ребят,А в чем преимущество использования указатедя this для доступа к

членам?

35 ответов

9 просмотров

Преимуществ нет, тебя всегда будут клеймить новичком, когда ты так делаешь

чтобы не получилось чего-то такого class C { public: int x; setX(int x){ x = x; } };

Liber Azerate
Нереальный кейс, ага

тут то это легко обнаружить

Egor Kulebyakin
чтобы не получилось чего-то такого class C { publi...

Во первых, в member init list-е даже с одинаковым названием такого не произойдёт. Во-вторых, никто не называет члены-данные и параметры одинаково. Ни один разумный человек, уточним

Egor Kulebyakin
чтобы не получилось чего-то такого class C { publi...

а параметры класса по умолчанию private ?

Не нужно ломать голову над конвенцией имён для членов класса, изменение имени локальной переменной никогда не сделает её случайно обращением к члену класса

Egor Kulebyakin
чтобы не получилось чего-то такого class C { publi...

Это решается не явным указыванием this, а включением хотя бы каких-то ворнингов в проекте

Liber Azerate
Во первых, в member init list-е даже с одинаковым ...

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

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

Назвать string – в принципе такая себе идея, учитывая то, что это название типа

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

И да назвать _string или string_, раз уж нет такой конвенции для полей

Liber Azerate
Назвать string – в принципе такая себе идея, учиты...

только этот тип находится в п.и. std, а мой аргумент — нет

Liber Azerate
И да назвать _string или string_, раз уж нет такой...

подчеркивания в начале это кривая дорожка

Sergey Skvortsov
Это решается не явным указыванием this, а включени...

Не поможет. Как компилятор поймёт, что ты действительно именно к полям обращаться хочешь, а не к аргументам?

Vlad
подчеркивания в начале это кривая дорожка

Ну, это всё же не та область видимости

Sergey Skvortsov
Поможет, конечно

Продемонстрируйте, пожалуйста

Egor Kulebyakin
меня

Ты в игрушки играть пришёл или писать код нормальный?

Liber Azerate
Ты в игрушки играть пришёл или писать код нормальн...

И вообще, в любом нормальном кодстиле такое учтено. А писать в компании ты будешь по какому-то кодстилю

Liber Azerate
Ты в игрушки играть пришёл или писать код нормальн...

при чем тут игрушки? Я не люблю подчеркивания

Sergey Skvortsov
https://godbolt.org/z/v4x9Er4E8

Включаем -Werror, как должно быть в любом новом (и старом) проекте и все

Egor Kulebyakin
не красиво

Тогда std::string __std_string__; Так красивее

Liber Azerate
Ну, это всё же не та область видимости

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

Vlad
в этом конкретном случае можно, конечно, но сам пр...

Я бы сказал, прецедент создания идентификатора с названием _ – не очень. И то, что из-за этого сложности с введением дискардов только доказывает подобное

Snowden
.

где я там сказал, что они public?

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

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

Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
А дальше что?.. Записать в файл, потом в Код?.. И потом разбирать как-то?..
Хаскель Моисеевич Гопник
14
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
@y0zhig @shizzard А можно я опишу цель и может вообще ерланг мне не подходит. На текущий момент как я понимаю у ерланга есть легковесные потоки и задача выполняется в каком т...
Дмитрий Спиридонов
5
Есть предложения, как подобное можно упростить?
Hemul GM
12
У меня вопросик назрел. Почему, создав класс без наследования и реализации деструктора Destroy, деструктор не вызывался при free. Потом указал наследование от tobject и overri...
Сергей Бычков
9
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
Карта сайта