在 C/C++ 中将未初始化的结构值传递给自身

时间:2021-04-27 01:40:21

标签: c++ c

这是如何允许编译的?我将结构的未初始化值传递给自身:

typedef struct test {
  int a;
} test;

int main(){
   test t= {t.a};
   return 0;
}

同样可以在 C++ 中使用构造函数和引用来完成:

class test{
 public:
 test(const test& input) : a(input.a){}
 int a;
};

int main(){
  test t(t);
  return 0;
}

这会导致未定义的行为吗?

编辑

如果这个值被初始化了,那会有什么不同吗? 如果 t.a 还没有完全定义,如何在表达式 test t= {t.a}; 中使用 t

1 个答案:

答案 0 :(得分:2)

我认为有 2 个答案。

一个是基于常识:对于这样的代码,是否有任何可以预期的合理行为?我想不出任何...

一个是基于事实的:读取未初始化的变量是一个 UB。