首页 > 编程语言 >为什么C++既有指针又有引用?

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

时间:2023-02-17 20:55:54浏览次数:30  
标签:const type C++ complex 引用 My 指针

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;    // 分配给引用

 

标签:const,type,C++,complex,引用,My,指针
From: https://www.cnblogs.com/wozhuyinghao/p/17131473.html

相关文章

  • 记录一个有意思c++现象
      即使类没有带参初始化函数依然可以给对象数组赋值,而且有多个成员时是每个对象每个成员逐个赋值的。====================  也可以这样两层赋值。============......
  • java jna框架免注册调用大漠插件及指针参数方法调用
    大漠dll说明1、dm.dll为com类型组件。2、DmReg.dll免注册为常规dll。学习研究时的历程1、因为大漠是com组件,所以可以使用jacob调用大漠。但是不支持免注册dll的使......
  • C++代码并行优化心得(OpenMP & TBB & Thread Pool)
    待更!  cmake引入OpenMP使用cmake中find_package指令查找openmp,格式如下:find_package(OpenMPREQUIRED)cmaketarget_link_libraries链接openmp:target_link_......
  • 关于C#方法中引用类型参数传递
    本文叙述的问题的根源在于对C#基础知识掌握不牢固,从而在遇到难以理解的问题时浪费了大量时间;在此也警示自己,该啃啃基础书籍了!话不多说,先上代码:先看问题services.AddEas......
  • C/C++学生个人消费记录管理系统[2023-02-17]
    C/C++学生个人消费记录管理系统[2023-02-17]学生个人消费记录管理系统学生个人消费记录管理系统给学生一个管理个人财务的平台,主要用于对学生的生活费用收入、支出进行添......
  • 【AI入门】C++构建BP神经网络,并实现手写数字识别
    目录BP神经网络的基本原理BP神经网络的C++实现将BP神经网络应用于手写数字识别存在的疑惑BP神经网络的基本原理参考资料:机器学习(西瓜书)-周志华如图所示,一个简单的BP......
  • 1.双指针
    1.双指针目录1.双指针1.1什么是双指针1.2对撞指针15.三数之和1.3快慢指针83.删除排序链表中的重复元素82.删除排序链表中的重复元素II1.1什么是双指针双指针,指......
  • C++ 猜数字
    #include<iostream>#include<random>#include<limits>namespacerandom{std::random_devicerd;std::seed_seqrr={rd(),rd(),rd(),rd(),rd(),rd......
  • C++中的静态成员
    在一个类的定义中,关键字static声明一个不属于类实例的成员。一些细节如果类定义中某个成员的声明说明符包含关键字static,那么它就是类的静态成员。静态成员的名称不能......
  • C++继承--公有继承
    C++继承--公有继承#include<iostream>#include<cstdio>usingnamespacestd;classStudent{//基类public:voidget_value();voiddisplay();private:intnu......