📜  C++ |静态关键字|问题4

📅  最后修改于: 2021-05-25 23:24:11             🧑  作者: Mango

预测以下C++程序的输出。

#include 
using namespace std;
  
class A
{
private:
    int x;
public:
    A(int _x)  {  x = _x; }
    int get()  { return x; }
};
  
class B
{
    static A a;
public:
   static int get()
   {  return a.get(); }
};
  
int main(void)
{
    B b;
    cout << b.get();
    return 0;
}

(A) 0
(B)链接器错误:未定义引用B :: a
(C)链接器错误:无法访问静态
(D)链接器错误:具有相同名称的多个函数get()答案: (B)
说明:存在编译器错误,因为未在B中定义静态成员a。

要解决该错误,我们需要显式定义a。以下程序运行正常。

#include 
using namespace std;

class A
{
private:
    int x;
public:
    A(int _x)  {  x = _x; }
    int get()  { return x; }
};

class B
{
    static A a;
public:
   static int get()
   {  return a.get(); }
};

A B::a(0);

int main(void)
{
    B b;
    cout << b.get();
    return 0;
}

这个问题的测验

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。