gpt4 book ai didi

c++ - C++中子类从基类继承的是什么?

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

我正在尝试理解继承的概念(在 C++ 中进行测试)。这里引用自:http://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming )

“在面向对象编程 (OOP) 中,继承是一种重用现有对象代码的方式,或从现有对象建立子类型,或两者兼而有之,具体取决于编程语言支持”

然后我测试了这段代码:

class Person
{
public:
int ii;
Person():ii(0){}
};
class Student : public Person
{
};
class Student1 : public Person
{
};

然后,

Person p;
Student s;
Student1 s1;
s.ii = 222;
p.ii = 333;
cout << s.ii << endl; // prints 222
cout << s1.ii << endl; // prints 0
cout << p.ii << endl; // prints 333

如结果所示,每个子类都有自己的 ii 变量版本,并且每个子类都从基类中获取拷贝值。因此,当我们更改一个时,不会影响其他。

我一开始并不是这么想的。我以为当从一个基类继承时,所有的子类都会继承相同的属性实例。每个子类不需要保留自己的版本。这可以利用重复使用和节省空间的优势。

我是不是误会了什么?如果我是对的,其他 OOP 语言也是如此吗?(我知道我可以使用静态变量来达到我的想法,但这不是我在说的)

最佳答案

您有三个类的实例,因此它们是独立的。这意味着子类不必声明 ii。将类想象成模板(尽管不要将它们与语言构造模板混淆),然后创建它们的实例。

您不会希望所有人员始终具有相同的字段值吧?

话虽如此,您可能正在寻找(可能不是/希望不是)静态变量。

在面向对象中查找实例

关于c++ - C++中子类从基类继承的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10471618/

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