执行这两个 C++初始化语法在语义上有什么不同吗?
假设以下代码是可以正确编译的合法代码,T 是类型名称,x 是变量名称。 语法一: T a(x); 语法二: T a = x; 这两个表达式的确切语义是否有所不同?如…
printf(“%x”,1) 是否会调用未定义的行为?
根据C标准(6.5.2.2第6段) 如果表示被调用函数的表达式的类型不包含 原型,对每个参数执行整数提升,并且参数 将 float 类型提升为 double 类型。这…
正在手动模拟 C++ 中删除运算符的效果;正式非法?
我意识到这是不明智的,我不建议这样做,但我很好奇以下内容是否实际上在形式上是非法的:据 #include struct X { ~X() { std::cout << "~X()\n"; } }…
在从放置 new 获得的指针上使用运算符删除的合法性
我确信这段代码应该是非法的,因为它显然不起作用,但它似乎是 C++0x FCD 允许的。 class X { /* ... */}; void* raw = malloc(sizeof (X)); X* p = n…
__PRETTY_FUNCTION__、__FUNCTION__、__func__ 之间有什么区别?
__PRETTY_FUNCTION__、__FUNCTION__、__func__ 之间有什么区别,它们的记录在哪里?我如何决定使用哪一个?…
`basic_streambuf::setbuf` 的效果
我的问题如下: Martin York 声明 这个,这个,以及这回答了人们可以制作一个stringstream使用 basic_stringbuf::pubsetbuf 从某些内存中读取,如下所…
‘long’ 是否保证至少为 32 位?
通过阅读 C++ 标准,我一直明白 C++ 中整数基本类型的大小如下: sizeof(char) <= sizeof(short int) <= sizeof(int) <= sizeof(long int) 我从 3.9.1…
C++ 到底在哪里?标准说取消引用未初始化的指针是未定义的行为?
到目前为止,我找不到如何推断以下内容: int* ptr; *ptr = 0; 是未定义的行为。 首先,5.3.1/1 规定 * 表示将 T* 转换为 T 的间接。但这并没有说明UB…
C++ 中未定义行为段落中的 [Note] 是什么意思?标准是什么意思?
作为用户 Tony 指出 C++标准第1.3.12段中有一个[注意] 允许的未定义行为的范围从完全忽略具有不可预测结果的情况,到在翻译或程序执行期间以环境特有…
定义具有不同签名的函数
今天我发现可以在标头中用一个签名声明一个函数,并在源文件中用不同(相似)的签名实现它。例如,像这样: // THE HEADER example.hpp #ifndef EXAMP…
具有与另一个类同名的类静态方法
这是示例: struct A { A(const int a ):b(a) { } int b; }; struct B { B() : a(5) { } static void A() { } A a; }; int main() { B::A(); } 编译器…
ISO C 中数组的左值到右值转换
C++ ANSI ISO IEC 14882 2003 附录 C.1(第 668 页): 更改:条件表达式、赋值表达式或逗号表达式的结果可能是 Bean 左值 理由:C++是面向对象的语言…