2301_81354056 2024-09-15 12:48 采纳率: 69.2%
浏览 1

为啥不同类型之间能赋值

img


构造函数那一行*this不是结构体数据类型吗?num不是longlong类型吗?

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-15 12:49
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    在C++中,不同类型之间的赋值之所以能够进行,是因为语言提供了隐式转换或显式转换的机制。下面针对你提供的代码片段进行详细解释:

    1. 关于类型之间的赋值

      • 在C++中,当你尝试将一个类型的值赋给另一个类型的变量时,会发生类型转换。这可以是隐式的(自动的)或显式的(需要程序员明确指示)。
      • 在你给出的代码中,BigInteger类有一个构造函数,它接受一个long long类型的参数,并且还有一个赋值运算符,也接受long long类型的参数。这意味着你可以将一个long long类型的值赋给一个BigInteger类型的对象。这是通过构造函数的隐式转换实现的。
    2. 关于构造函数中的*this = num;

      • *this是指向当前对象的指针,表示对象的自身。在这里,它是BigInteger对象的一个实例。
      • = num;是调用该类的赋值运算符来执行赋值操作。这个赋值运算符在类中定义了一个函数,用于处理如何将一个long long类型的数值赋给BigInteger对象。这里涉及到用户自定义的赋值运算符重载。
    3. 关于类型与赋值的具体实现

      • 在赋值运算符的实现中,首先将s向量清空,然后通过循环将传入的long long类型的数值按照指定的基数(在这里是BASE = 100000000)进行分解,并将每一位存储在向量s中。这样,一个高精度的整数就被存储在了向量中。最后返回当前对象(即*this)。

    关于你提到的“num不是longlong类型吗?”的问题,从提供的代码来看,“num”是一个变量名,其类型由上下文决定。在构造函数和赋值运算符中,“num”被声明为“long long”类型。因此,在这些上下文中,“num”确实是“long long”类型。

    总的来说,你提供的代码展示了如何在C++中使用结构体和自定义操作来实现大整数类的基本功能,包括构造和赋值操作。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月15日

悬赏问题

  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?
  • ¥15 nasm x86 变量归零
  • ¥65 Tree 树形控件实现单选功能,可以使用element也可以手写一个,实现全选为全选状态
  • ¥60 寻抓云闪付tn组成网页付款链接
  • ¥16 寻字节跳动内部人员帮推简历