静态成员与类相关联,而不是与对象相关联。默认实参在编译时就已经确定,因此即使没有对象实例也可以使用静态成员作为默认实参。
以下是一个示例代码:
cppCopy Codeclass MyClass { public: static int myStaticInt; void myFunc(int arg = myStaticInt) { std::cout << "arg = " << arg << std::endl; } }; int MyClass::myStaticInt = 10; int main() { MyClass obj; obj.myFunc(); // 输出结果为:arg = 10 return 0; }
在这个示例中,静态成员myStaticInt被用作函数myFunc的默认实参,即使没有对象实例也能够成功编译和运行,输出结果为arg = 10。
#include <bits/stdc++.h> class A{ void funct(){ a = 1; } public: static int a; }; int main(){ A::a = 1; A x; x.a = 1; return 0; }A的所有对象共用一个static变量a,都可以正常访问到的,只要是public的就可以,所以A选项正确。