相关疑难解决方法(0)

在C++ 14中,C++标准是否在使用不确定值和未定义行为方面发生了变化?

正如初始化所述,需要进行左值到右值的转换?是int x = x;UB吗?C++标准在3.3.2 声明部分中有一个令人惊讶的例子,其中a int用它自己的不确定值初始化:

int x = 12;
{ int x = x; }
Run Code Online (Sandbox Code Playgroud)

这里第二个x用它自己的(不确定的)值初始化.- 结束例子 ]

Johannes对此问题的回答表明是未定义的行为,因为它需要左值到右值的转换.

在最新的C++ 14草案标准中N3936,可以在此处找到此示例已更改为:

unsigned char x = 12;
{ unsigned char x = x; }
Run Code Online (Sandbox Code Playgroud)

这里第二个x用它自己的(不确定的)值初始化.- 结束例子 ]

C++ 14中有关于不确定值和未定义行为的变化,这些变化在示例中引发了这种变化吗?

c++ undefined-behavior language-lawyer c++11 c++14

62
推荐指数
1
解决办法
3991
查看次数

为什么'int i = i;' 法律?

可能重复:
int var = 1; void main(){int i = i; }

以下代码可以在g ++和Visual C++下通过编译.为什么合法?它看起来不合理,可能会导致隐藏的错误.

int main() {
  int i = i;
}
Run Code Online (Sandbox Code Playgroud)

c++

27
推荐指数
3
解决办法
2553
查看次数

没有默认构造函数的奇怪的c ++拷贝构造函数

我和我的一位同事讨论过关于他人的问题

Pt pt;
Run Code Online (Sandbox Code Playgroud)

Pt pt = Pt(); 
Run Code Online (Sandbox Code Playgroud)

是等价的.我怀疑在第二种情况下可以调用复制分配,但事实证明并非如此.

当我们进行我们的小实验时,我决定测试一个奇怪的位,我的同事认为甚至不会编译:

//here the compiler calls a copy constructor and doesn't call the default constructor prior to that
// O_o
Pt pt = pt;
Run Code Online (Sandbox Code Playgroud)

以下是一个工作示例:http://ideone.com/XmJSz7

所以,问题是 - 发生了什么:

Pt pt = pt;
Run Code Online (Sandbox Code Playgroud)

c++ copy-constructor default-constructor

9
推荐指数
1
解决办法
490
查看次数

与显式初始化相比,了解C++中的复制初始化

为什么第一个注释行正确编译,而第二个没有?

为什么可以a将自己作为构造函数参数,但b不能?
这两个人做的不一样吗?

class Foo { Foo &operator =(Foo const &); /* Disable assignment */ };

int main()
{
    Foo a = a;  // OK
    Foo  b(b);  // error C2065: 'b' : undeclared identifier
}
Run Code Online (Sandbox Code Playgroud)

更新

由于它看起来像编译器依赖,似乎问题比我想象的更严重.
所以我想问题的另一部分是,以下代码是否有效?

它在GCC中出错,但Visual C++执行得很好.

int main()
{
    int i = 0;
    { int *i(&i); }
    return i;
}
Run Code Online (Sandbox Code Playgroud)

c++ constructor initialization

8
推荐指数
1
解决办法
217
查看次数

为什么不给出编译错误?

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

根据赋值运算符规则,它应该从右到左读取行.看到'a'未声明的编译器后应该给出编译错误.
但是it is giving garbage value.请澄清一下.

c c++

6
推荐指数
2
解决办法
270
查看次数