【发布时间】:2020-09-07 09:48:15
【问题描述】:
我有一个基类
class Servicii{
protected:
double price;
public:
Servicii(double p):price(p){}
double getPrice(){return price;}
还有3个派生类CarBookHouse。因为是派生类,所以都会有价格
class House:public Servicii{
private:
int level;
public:
House(double p,int l):
Servicii(price),level(l){}
我主要创建一些像这样的对象:
House *h1=new House(600,3);
Book *b1=new Book("Dostoievski","Crima si Pedeapsa",5,98.5);
我的问题是当我打印时价格总是 0。例如房子的价格是 600,但是当我打印时它是 0,我不知道为什么。 我在 Servicii 中创建了一个打印函数,所有派生类都继承了这个函数+它们打印自己的属性。
【问题讨论】:
-
House的成员初始化器中不应该是Servicii(p)吗?请提供mre。 -
只是看起来像一个错字,但这个错字是在这篇文章中,还是在实际代码中?
-
打开编译器警告。任何编译器都应该警告你不要使用
p。 Clang 乐于助人points out the use of an uninitialized variable.
标签: c++ inheritance printing derived-class