gpt4 book ai didi

c++ - 为什么从 const 函数 c++ 的主体中调用非 const 函数?

转载 作者:搜寻专家 更新时间:2023-10-30 23:57:50 25 4
gpt4 key购买 nike

考虑以下代码,在本例中输出为:

f non const
g const

这有点令人困惑,因为 someClass 正在从其 const 函数中为 const 数据成员调用非 const 函数:

#include <iostream>
using namespace std;

class Inner
{
public:
void f() const { cout<< "f const" <<endl; }
void f() { cout<< "f non const" <<endl; }
};

class someClass
{
Inner * const obj2;
public:
someClass():obj2(){}
void g() {obj2->f(); cout<< "g non const" <<endl; }
void g() const {obj2->f(); cout<< "g const" <<endl; }

};

int main()
{
const someClass a;
a.g();
}

为什么在这种情况下 someClass 调用非 const 函数?

最佳答案

我猜你在问为什么调用 void Inner::f()。这是因为您有一个指向非常量 Innerconst 指针:

Inner * const obj2;

如果你想要一个指向const Inner的指针,那么你需要

const Inner * obj2;

Inner const * obj2;

如果你想要一个指向const内部的const指针,

const Inner * const obj2;

我会让你想出另一种选择。

关于c++ - 为什么从 const 函数 c++ 的主体中调用非 const 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23186421/

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