首页 > 解决方案 > 在 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

标签: c++c

解决方案


我认为有2个答案。

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

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


推荐阅读