这是我的代码 -
#include <iostream>
#include <conio.h>
using namespace std;
class Base
{
public:
int a;
};
//int Base::a = 5;
class Derived : public Base
{
public:
int static a;
};
int main()
{
Derived d;
cout<<d.a;
getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在这里得到一个链接器错误.但是,当我以相反的方式做到这一点时 -
class Base
{
public:
int static a;
};
int Base::a = 5;
class Derived : public Base
{
public:
int a;
};
Run Code Online (Sandbox Code Playgroud)
我没有错.有人可以解释一下这里发生了什么.
必须在类外部显式定义/初始化所有静态成员.
在第二个示例中,您正确执行此操作(int Base :: a = 5),但在第一个示例中,您不对Derived :: a执行此操作,在第一个示例中添加以下行应解决它:
int Derived::a = 5;
Run Code Online (Sandbox Code Playgroud)