提问人:user3443063 提问时间:8/16/2023 最后编辑:M. Justinuser3443063 更新时间:10/4/2023 访问量:154
带有两个等号的 C++ 命令如何工作?
How does a C++ command with two equal signs work?
问:
我在我使用的程序中找到了一些代码:
PWSTR myWchar = NULL;
WCHAR *p = myWchar = new WCHAR[4];
我将如何阅读带有两个等号的行?
它是如何计算的?
一个:
myWchar = new WCHAR[4];
WCHAR *p = myWchar
或 B:
WCHAR *p = myWchar ;
myWchar = new WCHAR[4];
答:
9赞
ShadowRanger
8/16/2023
#1
它是选项 A,完全等同于(带有不必要的 parens):
WCHAR *p = (myWchar = new WCHAR[4]);
如果有一个自定义和/或类型有一个自定义构造函数或从 的类型转换为 的类型,这可能意味着并最终彼此略有不同,但在这种情况下,并且基本上是相同的类型,因此它们最终都分配给了同一事物,结果是 .myWchar
operator=
p
myWchar
p
p
myWchar
WCHAR*
PWSTR
new WCHAR[4]
在本例中,它实际上是赋值的结果,用作 的初始化,但即使结构为:myWchar
p
PWSTR myWchar = NULL;
WCHAR *p;
p = myWchar = new WCHAR[4];
所以它都是赋值,没有初始化,赋值是从右到左的关联,所以它会以相同的顺序发生(它只是使用赋值而不是初始化语义来赋值,这可能对自定义类型很重要)。p
评论
0赞
Bathsheba
8/17/2023
知道这个网站,它将被关闭和删除,因为它是重复的。(所有 C++ 问题都是“你能给我 C++ 规范吗”的重复。但这是一个很好的答案。投个赞成票,尽你所能享受它。
评论
WCHAR *p = myWchar = new WCHAR[4];
与 完全相同。请注意,变量 (like ) 的初始化不是赋值。这是初始化。WCHAR *p = (myWchar = new WCHAR[4]);
PWSTR myWchar = NULL;