gpt4 book ai didi

c++ - 为什么非成员函数不允许使用 const 之类的修饰符

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:34 25 4
gpt4 key购买 nike

我不明白为什么不允许非成员函数使用 constvolatile 修饰符。

下面是我累的示例代码

class A
{
private:
int var;
public:
int func();
};

int A::func()
{
// Some calculation on using var
int temp = var + 10;
return temp;
}

void func2( const A& tempObj ) const;

void func2( const A& tempObj )
{
std::cout << "temp obj called : " << tempObj.func() << std::endl;
}

int main()
{
A aobj;
aobj.func();
func2( aobj );
return 0;
}

这会引发编译器错误 error C2270: 'func2' : modifiers not allowed on nonmember functions for void func2( const A& tempObj ) const;

我还收到另一个错误 error C2662: 'A::func' : cannot convert 'this' pointer from 'const A' to 'A &' for tempObj.func() func2 这里我假设成员函数 func 将被调用而没有任何错误。

最佳答案

const 修饰符表示成员函数不会修改该函数所属对象的数据成员。

这就像保证在对象 aobj 上调用该函数 不会修改该对象的内部状态。因此,假设 aobj 也被声明为 const,您仍然可以在其上调用该函数;相反,您将无法调用非 const 函数成员。

如果函数不是类的成员,则应用 const 修饰符是没有意义的。在另一种语言中,这可能意味着该函数无法修改全局变量;但该语言不是 C++。

关于c++ - 为什么非成员函数不允许使用 const 之类的修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29116334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com