首页 > 试题广场 >

以下程序输出什么? #include <io

[单选题]
以下程序输出什么?
#include <iostream>
class ComponentA
{
public:
  ComponentA()
  {
    std::cout << "a";
  }
  ~ComponentA()
  {
    std::cout << "~a";
  }
};

class ComponentB
{
public:
  ComponentB()
  {
    std::cout << "b";
    throw std::exception();
  }
  ~ComponentB()
  {
    std::cout << "~b";
  }
};

class ComponentC
{
public:
  ComponentC()
  {
    std::cout << "c";
  }
  ~ComponentC()
  {
    std::cout << "~c";
  }
};

class Container
{
  ComponentA m_a;
  ComponentB m_b;
  ComponentC m_c;
public:
  Container()
  {
    std::cout << "d";
  }
  ~Container()
  {
    std::cout << "~d";
  }
};

int main()
{
  try
  {
    Container c;
  }
  catch (std::exception const &)
  {
  }
  return 0;
}
  • ab~b~a
  • ab~a
  • abcd~d~c~b~a
  • 其他都不对
D?
发表于 2024-11-20 23:29:33 回复(0)

注意到ComponentB的构造函数会抛出错误

class ComponentB
{
public:
  ComponentB()
  {
    std::cout << "b";

//抛出错误
    throw std::exception();
  }
  ~ComponentB()
  {
    std::cout << "~b";
  }
};
编辑于 2024-11-19 17:50:27 回复(0)