gpt4 book ai didi

c++ - 在 printf 中使用 `operator const char*`

转载 作者:搜寻专家 更新时间:2023-10-30 23:55:04 26 4
gpt4 key购买 nike

struct MyClass
{
operator const char* ()
{
return "hello";
}
};

int main()
{
MyClass obj;
std::cout << obj; // ok
printf("%s\n", obj); // Crash
}

为什么operator const char*对象在printf中不能自动转换为const char* string映射 %s?

是否仅仅是因为在类似 printf 的函数中没有类型意识并且 %s 只期望一个带有终端 0 的 char 数组?

最佳答案

为什么?由于 C++ 中可变参数的限制:它们基本上没有类型,您可以将它们视为 void *(但它们不是)。

所以知道了,编译器不知道你认为它应该是一个字符串。它很可能需要是整数、 double 或其他对象。或者只是它本身,由编译器选择。

关于c++ - 在 printf 中使用 `operator const char*`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33750171/

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