gpt4 book ai didi

基本类型的 C++ 初始化程序/构造函数

转载 作者:行者123 更新时间:2023-11-30 01:55:06 26 4
gpt4 key购买 nike

给定以下代码,返回前函数末尾的 junk1 指向什么?

static void junkf(void)
{
static const char s_char = char();
const char *junk1 = &s_char;
static const int s_int = int();
const int *junk2 = &s_int;
}

(请注意,这是我从模板类中展开的一个函数,该函数根据声明替换了“char”或“int”。我假设 junk2 指向一个值为零的 int——正确吗?)

C++ 语言中调用的“char()”或“int()”结构是什么?我想了解有关基本类型的这种构造的更多信息,但似乎找不到任何相关信息。这是初始化程序、构造函数还是...?

谢谢!

最佳答案

在函数的末尾,junk1 指向您告诉它指向的完全相同的东西 — s_char

由于 junk1 在函数结束时死亡,因此 s_car 是否还存在于此之外不属于任何有用的讨论的一部分。


根据评论稍微重写问题:

const char c = char();  // what value does `c` have, and why?
const char* ptr = &c; // what does `ptr` point to?

char() 是一个包含匿名临时 char 构造的表达式。使用空构造函数参数列表实例化类型会执行值初始化 (§8.5/10)。 §8.5/7 告诉我们,在值初始化期间,由于 char 不是类或数组类型,它将被零初始化。

我们的 c 是从这个临时变量初始化的,所以它的值是 0。这有效地导致 ptr 成为零长度、以 null 结尾的 C 字符串。

char c; 这样的声明满足这个标准!

关于基本类型的 C++ 初始化程序/构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21010829/

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