首页 > 试题广场 >

下列关于类中的静态成员的说法错误的是()

[单选题]
下列关于类中的静态成员的说法错误的是()
  • 虽然静态成员不属于类的某个对象,但是我们仍然可以使用类的对象、引用或者指针来访问静态成员
  • 成员函数不用通过作用域运算符就能直接使用静态成员
  • 静态数据成员不是由类的构造函数初始化的
  • 静态成员不可以作为默认实参
类的所有成员共享一个静态成员。静态类数据成员必须在类的内部声明,在类的外部初始化。在访问静态成员时,可以通过对象访问,也可以通过类访问。通过this指针访问的数据成员和方法成员都必须是类的非静态成员。
发表于 2019-10-08 15:10:40 回复(0)
D:静态成员可以作为默认实参,非静态成员不能,原理this指针
发表于 2019-08-27 10:08:38 回复(0)
class a {
public:
    static int i;
};
int main()//主函数
{
    a a1;
    a1.i = 3;//对象修改静态变量
    a::i = 4;//类直接修改静态变量
}
发表于 2020-03-20 15:16:47 回复(0)

静态成员与类相关联,而不是与对象相关联。默认实参在编译时就已经确定,因此即使没有对象实例也可以使用静态成员作为默认实参。

以下是一个示例代码:

cppCopy Code
class 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。

发表于 2023-10-30 16:44:55 回复(0)
#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选项正确。
编辑于 2023-10-13 22:31:04 回复(2)