20231002 基础 C++题目
题目
下面展示的代码
C++
#include <iostream>
struct foo{
char a[16];
};
int main(){
foo a {"Hello, World!"};
auto b = a;
a.a[0] = '\0';
std::cout << b.a;
}
其行为是:
- A. 无法编译/未定义行为
- B. 可编译,保证无输出
- C. 可编译,保证输出
"Hello, World!"
- D. 可编译,输出为实现定义
答案
C
解析
虽然数组类型不能直接赋值,但是作为类类型成员的数组类型,默认复制赋值函数的行为是逐元素复制。
- 此赋值行为在 C 语言也是成立的。
- 切忌将 foo::a 理解成指针。