Skip to content

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 理解成指针。