gpt4 book ai didi

C++构造函数并将变量传递给另一个类

转载 作者:行者123 更新时间:2023-11-28 02:00:50 26 4
gpt4 key购买 nike

好吧,只是新的类,并尝试创建一个简单的程序,它有 2 个类。 A 类和 B 类。好吧,我正在尝试在 A 类的构造函数中初始化我的变量,然后执行一些操作并将其传递给 B 类,我也可以在 B 类中执行一些操作。所以A类是基类。但是,当我编译程序时出现了两个错误 -

error: ‘i’ was not declared in this scope

对于 A 类和 B 类。所以我有两个问题 1) 为什么构造函数不声明变量(根据首先调用构造函数的书籍)? 2) 我可以通过哪些方式将变量从 A 类转移到 B 类中使用?

#include <iostream>
#include <cstdio>
using namespace std;
class A {
public:
A(){
int i =1;
}
~A(){}
int foo () {
int p = i+1;
i++;
return p;
}

};

class B : public A {
public:
int showme() {
return i;
}
};

int main() {
A j;
B k;
cout<< k.showme()<<endl;
cout<< j.foo()<<endl;
return 0;
}

最佳答案

首先,买一本好书:

The Definitive C++ Book Guide and List

并熟悉基础知识。你的问题表明你现在对 C++ 的理解一团糟。

现在开始真正的问题。

1) C-tor 不声明类成员变量,它只能声明一个局部变量,因为c-tor 也是一个函数。您需要像这样显式声明成员变量:

class A {
int i;
public:
A(int _i): i(_i) { }
};

2) “转移”一词本身是不正确的。在这种情况下,这两个类处于继承层次结构中,因此变量 i 由类 B 继承,如果您将其声明为 protected ,那么它将以您的方式访问。函数 B::showme() 定义正确。修复第一部分,示例将正常运行。

3) 不要混淆对象。当声明了 A 类的对象时,它与 AB 类的另一个对象没有任何关系。 jk 共享它们自己的 int i 私有(private)实例(前提是你修复了 (a))并且如果你想拥有 ki 实例等于 j 的实例,例如,您可以实现复制构造函数或一对 getter/setter 函数。

关于C++构造函数并将变量传递给另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39651949/

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