gpt4 book ai didi

c++ - 运算符链接在 C++ 中是如何发生的?

转载 作者:IT老高 更新时间:2023-10-28 22:24:14 24 4
gpt4 key购买 nike

我在这里有一个完全基本的 C++ 问题。

#include <iostream>
using namespace std;

int main() {
int a = 255;
cout << hex << a << endl; // <-----
}

在上面的代码中,std::cout语句链接?

我了解 cout 的实现将返回对 cout 的引用对象允许链接发生,所以它应该被执行为:

(((cout << hex) << a) << endl)

即相当于这些,按顺序

  1. cout << hex
  2. cout << a
  3. cout << endl

但事实并非如此,因为 a 的值不知何故需要转换为hex形式!

编译器实际上如何链接运算符以进行转换?

最佳答案

你说得对,它就是这样工作的。 hex只是有一个特殊的类型可以改变 cout 的内部状态传递给其 operator<< 的对象功能。然后内部状态决定任何 future 值如何传递给cout。通过operator<<治疗。

std::hex恰好是一个函数。 cout << hex但是,它不会这样调用 hex 函数:它将指向 hex 函数的指针传递给 operator<< ostream 的过载它接受具有特定签名的函数指针。 hex()然后通过该函数指针从运算符实现内部调用,并修改 ostream据我所知,那里的对象。

关于c++ - 运算符链接在 C++ 中是如何发生的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9555555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com