gpt4 book ai didi

c++ - C++ 类中 const 属性的后期绑定(bind)?

转载 作者:搜寻专家 更新时间:2023-10-31 00:19:44 27 4
gpt4 key购买 nike

我知道类属性没有后期绑定(bind)。但我需要一个好的模式来做到这一点:

#include <cstdlib>
#include <iostream>
using namespace std;

class B
{
public:
const int i;
B() : i(1) {}
};

class D : public B
{
public:
const int i;
D() : i(2) {}
};


int main()
{
D d;
B *ptr = &d;

cout << ptr->i << endl;

return 0;
}

输出为 1,但我期望为 2。我想,我应该使用不同的模式。有什么建议吗?

最佳答案

获取输出的i 版本取决于编译时 类型定义。您定义了两个不同的变量,因此您将得到两个不同的结果。解决这个问题的方法是确保只有一个版本的变量。您可以在 B 中使用构造函数来初始化 const 变量。

class B
{
public:
const int i;
B() : i(1) {}
protected:
B(int j) : i(j) {}
};

class D : public B
{
public:
D() : B(2) {}
};

关于c++ - C++ 类中 const 属性的后期绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7636717/

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