小编dog*_*719的帖子

C++中的类a()和类a = class()有什么区别?

来自Java和C#世界,我总是喜欢使用

someclass a = someclass();
Run Code Online (Sandbox Code Playgroud)

代替

someclass a();
Run Code Online (Sandbox Code Playgroud)

在C++中初始化一个类变量.但是,我的编译器有时会抱怨

Error C2280: Attempting to reference a deleted function
Run Code Online (Sandbox Code Playgroud)

它们之间有什么区别吗?哪一个更好?

c++ initialization class

4
推荐指数
1
解决办法
196
查看次数

为什么将无符号转换为直接用C签名会得到正确的结果?

在C中,有符号整数和无符号整数在内存中的存储方式不同.当类型在运行时清除时,C还隐式转换有符号整数和无符号整数.但是,当我尝试以下代码段时,

#include <stdio.h>

int main() {    
    unsigned int a = 5;
    signed int b = a;
    signed int c = *(unsigned int*)&a;
    signed int d = *(signed int*)&a;

    printf("%u\n", a);
    printf("%i\n", b);
    printf("%i\n", c);
    printf("%i\n", d);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

预期产量:

5
5                   //Implicit conversion occurs
5                   //Implicit conversion occurs, because it knows that *(unsigned int*)&a is an unsigned int
[some crazy number] //a is casted directly to signed int without conversion
Run Code Online (Sandbox Code Playgroud)

然而,实际上,它输出

5
5
5
5
Run Code Online (Sandbox Code Playgroud)

为什么?

c c++ unsigned-integer

-1
推荐指数
1
解决办法
107
查看次数

标签 统计

c++ ×2

c ×1

class ×1

initialization ×1

unsigned-integer ×1