Недавно, когда я объяснял основную разницу между указателями и ссылками (в контексте программирования на С++) кому-то, я рассказал обычные объяснения, которые говорят о различных соглашениях о передаче аргументов функции - Call on value, Call by pointer, Call by reference, и всю связанную с этим теорию о ссылках.
Но тогда я подумал, что бы ссылка С++ не имела в терминах передачи аргументов (Позволяет эффективно управлять передачей больших структур/объектов в памяти, в то же время сохраняет ее в безопасности, не позволяя вызываемому изменять любые переменные переданного объекта как ссылка, если наш дизайн требует этого)
Указатель const в C будет достигать того же самого, например. Если нужно передать указатель структуры, произнесите struct mystr * ptr, указав указатель структуры как константу -
func(int,int,(const struct mystr*)(ptr));
будет ли ptr не быть каким-то эквивалентом ссылки?
-
Не будет ли это работать так, чтобы эффективность памяти была не реплицирована (передается по указателю), но также безопасна, запрещая любые изменения в полях структуры из-за того, что она передается как const указатель.
В контексте объекта С++ мы можем передавать указатель объекта const вместо ссылки на объект, чтобы достичь такой же функциональности)
-
Если да, то какой сценарий использования в С++ нуждается в ссылках. Любые конкретные преимущества ссылок и связанные с ними недостатки?
спасибо.
-AD