为什么C++既有指针又有引用?

简介: 为什么C++既有指针又有引用?

C++ 从 C 继承了指针,所以我不能在不导致严重的兼容性问题的情况下删除它们。 引用在很多方面都很有用,但我在 C++ 中引入它们的直接原因是为了支持运算符重载。 例如:

void f1(const complex* x, const complex* y)    // without references

   {

       complex z = *x+*y;    // ugly

       // ...

   }


   void f2(const complex& x, const complex& y)    // with references

   {

       complex z = x+y;    // better

       // ...

   }    

 

更一般地说,如果你想同时拥有指针的功能和引用的功能,你需要两种不同的类型(如在 C++ 中)或对一种类型的两组不同的操作。 例如,对于单一类型,您既需要分配给所引用对象的操作,也需要分配给引用/指针的操作。 这可以使用单独的运算符来完成(如在 Simula 中)。 例如:

Ref<My_type> r :- new My_type;

   r := 7;            // 分配给对象

   r :- new My_type;    // 分配给引用

或者,您可以依赖类型检查(重载)。例如:

Ref<My_type> r = new My_type;

   r = 7;            // 分配给对象

   r = new My_type;    // 分配给引用

相关文章
|
1月前
|
JSON JavaScript 前端开发
C++ 智能指针与 JSON 处理:高级编程技巧与常见问题解析
C++ 智能指针与 JSON 处理:高级编程技巧与常见问题解析
267 0
|
2天前
|
C++
【C++11(三)】智能指针详解--RAII思想&循环引用问题
【C++11(三)】智能指针详解--RAII思想&循环引用问题
|
2天前
|
人工智能 C++
【重学C++】【指针】轻松理解常量指针和指针常量
【重学C++】【指针】轻松理解常量指针和指针常量
9 0
|
2天前
|
存储 人工智能 C++
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
25 1
|
17天前
|
存储 C++
C++指针
C++指针
|
28天前
|
存储 编译器 C语言
【c++】类和对象(二)this指针
朋友们大家好,本节内容来到类和对象第二篇,本篇文章会带领大家了解this指针
【c++】类和对象(二)this指针
|
29天前
|
存储 编译器 C语言
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
|
30天前
|
监控 安全 算法
悬垂引用与临时对象在C++中的深入探讨: 风险、原因与预防策略
悬垂引用与临时对象在C++中的深入探讨: 风险、原因与预防策略
54 3
|
1月前
|
存储 安全 数据库连接
【C++智能指针】深入探究C++智能指针:自定义删除器的设计与选择
【C++智能指针】深入探究C++智能指针:自定义删除器的设计与选择
82 0
|
1月前
|
存储 安全 编译器
【C++ 函数设计的艺术】深挖 C++ 函数参数的选择 智能指针与 std::optional:最佳实践与陷阱
【C++ 函数设计的艺术】深挖 C++ 函数参数的选择 智能指针与 std::optional:最佳实践与陷阱
110 0