为什么我得到的结果是BASE 10 DERIVED 11
时间: 2024-03-27 21:41:49 浏览: 7
根据你提供的代码和结果,我猜测你的代码和原始代码有所不同。在原始代码中,objs数组中的第二个元素指向的是DERIVED类的对象,因此在循环中,第二次调用hello函数时输出的是字符串“DERIVED”。
而在你的代码中,可能是将DERIVED类中的构造函数移除了,导致objs数组中的第二个元素实际上指向的是BASE类的对象,因此第二次调用hello函数时输出的是字符串“BASE”。
至于输出结果中的10和11,可能是因为你修改了update函数中的逻辑,导致输出结果与原始代码不同。如果你能提供更多的信息,我可以帮你进一步分析。
相关问题
class Derived : public Base
### 回答1:
这是 C++ 中的继承语法,表示一个名为 Derived 的类从 Base 类继承了所有的成员变量和成员函数。其中关键字 public 表示派生类 Derived 中对于 Base 类中的 public 成员可以直接访问,而对于 Base 类中的 protected 和 private 成员则只能通过 Base 类的成员函数来访问。
### 回答2:
class Derived : public Base 是一种继承关系的声明,表示派生类 Derived 是基类 Base 的一个扩展。
继承是面向对象编程中的重要概念,它允许创建一个新的类(派生类),从一个已有的类(基类)继承属性和方法。在这个声明中,派生类 Derived 是由基类 Base 派生而来。
关键字 public 表示继承的类型为公有继承,这意味着 Derived 类中的公有成员和保护成员可以被外部代码访问,而私有成员只能在类的内部访问。公有继承表示派生类继承了基类的接口和实现,并且可以与基类的对象进行兼容。
通过继承,Derived 类可以使用 Base 类中的方法和属性,使得代码复用性提高,并且能够在 Derived 类中添加新的特性和功能。派生类可以重写基类的虚函数以实现多态性,还可以通过扩展基类的接口来满足新的需求。
综上所述,class Derived : public Base 声明了一个派生类 Derived,它从基类 Base 继承属性和方法,并且派生类的公有和保护成员可以被外部访问。这种继承关系使得代码的复用性和可扩展性得到提高。
### 回答3:
class Derived : public Base 是一种类的声明方式,它表示Derived是继承自Base的派生类。
在C++中,继承是一种面向对象的编程概念,它允许一个类(派生类)从另一个类(基类)获得属性和方法。在这种情况下,Derived是派生类,Base是基类。
通过使用关键字public,Derived继承了Base的公有成员和方法。这意味着Derived可以直接使用Base的公有成员和方法,无需重新实现或重复定义。同时,Derived还可以在其自身中添加新的成员和方法,扩展或定制Base的功能。
继承提供了代码重用的机制,可以减少代码的冗余和重复编写。它还支持多态性的实现,即Derived的对象可以赋值给Base的对象,并且可以通过基类指针或引用调用派生类的方法。
需要注意的是,Derived继承的基类可以是抽象类、普通类或其他派生类。在继承关系中,派生类可以对基类的成员进行修改或重写,也可以添加自己特有的成员和方法。
总之,class Derived : public Base 表示Derived是一个使用public方式继承自Base的派生类,在其基础上可以添加新的成员和方法,从而实现代码的重用和功能的扩展。
base
`base()` 是 C++ 中调用基类构造函数的语法。在派生类的构造函数中,可以通过 `base()` 调用基类的默认构造函数,或者通过 `base(args)` 调用基类的带参数的构造函数。这样做可以确保基类的成员变量得到正确的初始化。例如:
```c++
class Base {
public:
Base(int value) : m_value(value) {}
private:
int m_value;
};
class Derived : public Base {
public:
Derived(int value) : Base(value), m_value2(value * 2) {}
private:
int m_value2;
};
```
在 `Derived` 的构造函数中,我们使用 `base(value)` 调用了 `Base` 的构造函数,确保了 `m_value` 成员变量的初始化。