gpt4 book ai didi

c++ - 使用父类构造函数为继承的变量重新赋值

转载 作者:太空宇宙 更新时间:2023-11-04 16:21:33 24 4
gpt4 key购买 nike

我有一个从类 A 继承的 C++ 类 B。我可能错过了 OOP 的一个重要概念,这当然很微不足道,但我不明白在实例化 B 之后,我怎么能在里面使用 A 的构造函数B 将新值重新分配给从 A 继承的局部变量:

A 级

class A{
public:
A(int a, int b){
m_foo = a;
m_bar = b;
}
protected:
int m_foo;
int m_bar;
};

B 级

class B : public A{
public:
B(int a, int b, int c):A(a,b),m_loc(c){};
void resetParent(){
/* Can I use the constructor of A to change m_foo and
* m_bar without explicitly reassigning value? */

A(10,30); // Obviously, this does not work :)

std::cout<<m_foo<<"; "<<m_bar<<std::endl;
}
private:
int m_loc;
};

主要

int main(){
B b(0,1,3);
b.resetParent();
return 1;
}

在这个具体的例子中,我想调用 b.resetParent(),它应该调用 A::A() 来改变 m_foo 的值m_bar(在 b 中)分别为 10 和 30。因此,我应该打印“10; 30”而不是“0; 1”。

非常感谢您的帮助,

最佳答案

您不能使用构造函数来更改对象,只能构造它。要更改已构建的对象,您需要使用它的 publicprotected(在派生 class 的情况下)成员。在您的示例中,A 需要实现一个 reset() 成员函数,该函数稍后可用于重置其状态。

关于c++ - 使用父类构造函数为继承的变量重新赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16125730/

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