静态函数 static bool 类型 问题

发布于 2022-08-24 02:25:41 字数 174 浏览 14 评论 0

函数定义为static bool foo(const std::string& iVariable); 属于类A
当我在使用时 if (A::foo(Var)) 时,我发现多次调用该if语句,且使用了不同的Var时,foo返回值一直是false,是不是说静态函数的值在第一次调用时就确定了,无法改变?困惑,谢谢!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

叹沉浮 2022-08-31 02:25:41

建议你还是把代码贴出来。我总结了一下关于静态数据成员和静态成员函数的一些知识点,希望对你有用!

静态成员函数不和任何对象相关联,所以

1、无法访问属于类对象的非静态数据成员

class A
{
    private:
        int a;//non-static
    public:
	A(int init):a(init){}
	static getvalue(){return a;}/*错误,无法访问属于类对象的非静态数据成员*/
};

2、无法访问非静态成员函数

class A
{
    private:
        int a;//non-static
    public:
	A(int init):a(init){}
	int getvalue(){return a;}//non-static
	static printvalue(){cout << getvalue() << endl;}/*错误,无法访问非静态成员函数*/
};

3、只能调用其余的静态成员函数

class A
{
    private:
	static int staticvalue;
        int a;//non-static
    public:
	A(int init):a(init){}
	static int getvalue(){return staticvalue;}
	static printvalue(){cout << getvalue() << endl;}
};

int A::staticvalue = 2;//类外的定义

int main(int argc , char *argv[])
{
    A demo(1);
    demo.printvalue();
    A::printvalue();

    return 0;
}

BTW:静态数据成员必须在类的外部定义

假装爱人 2022-08-31 02:25:41

楼上说的有问题,静态函数是最好只引用静态数据成员,但也可以引用非静态的数据成员。如果引用对象中的非静态数据成员可以声明函数static bool foo(A & a)。lz这里const std::string& iVariable并不是类A中的数据成员,为什么要用静态函数来处理呢?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文