说我有这个结构:
struct F
{
int& ref; // reference member
const int c; // const member
// F::F() is implicitly defined as deleted
};
Run Code Online (Sandbox Code Playgroud)
那是来自cppreference.据我从文档中理解,构造函数F被认为是删除的,因为它有一个引用变量,它什么都没引用.因此,不能F像这样声明类型的变量:F variableName;因为会出现错误,例如:struct中的未初始化的引用成员F.
我理解这一点但是我不明白如果你甚至不能声明它的类型的变量这样的结构会有什么好处.这种数据类型在某些特定情况下是否有用?
我四处寻找这个,但我没有找到任何答案。我正在查看由其他人编写的 Python 代码,并且有一个模块说“GUI_Module”。该模块包含一个包含 GUI 相关方法的类。然后将该模块导入到__main__使用这些方法的Python 文件中。
而不是像这样以其实际名称导入:
import GUI_Module
Run Code Online (Sandbox Code Playgroud)
它是这样导入的,带有前导下划线:
import _GUI_Module
Run Code Online (Sandbox Code Playgroud)
现在我知道 Python 中下划线的大多数含义,但我还没有找到任何解释我们正在导入的模块名称之前的单个下划线应该做什么的任何内容。
如果这个问题太基本,我很抱歉......我只是没有在任何地方找到答案。
假设我像这样声明了一个 C 变量:
unsigned int var = 241;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,var 是无符号的,所以我的目的是让它具有十进制值 241。
或者我可以这样声明:
signed int var = -15;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我将其声明为有符号整数,因此根据我的理解,它应该具有十进制值 -15。
但是,这两次,我都假设 var 将在内存(硬件)中声明如下:1111 0001。
那么处理器如何知道在硬件中的最低级别我打算将其声明为 241 还是 -15?我知道用于表示负数等的二进制补码表示法,但是,我假设在硬件中,处理器只能看到一系列 1 和 0,然后通过切换某些 IC 的状态对其进行一些操作。处理器如何知道是解释标准二进制(无符号)还是 2 的补码(有符号)中的位序列?
还有另一个有点不相关的问题:
在 CI 中可以这样做:
无符号整数 var = -15; printf("变量是:%d", var); 这将按预期打印 -15。为什么,当我这样做时:
有符号 int var = 0xF1; //或 0b11110001 printf("The var is: %d ", var);
我得到 241 而不是 -15?既然我声明它是有符号的并且在二进制补码中 0xF1 是 -15 为什么我得到的值 241 相当于标准二进制中的 0xF1 ?
它不应该抛出一个错误,告诉我我不能将负值分配给我声明为无符号的变量吗?
谢谢你,我为我的许多可能是基本的问题道歉,我不知道的太多了:D。