获取我的基类以递增派生类对象整数

Get my base class to increment my derived class objects integer

本文关键字:派生 对象 整数 我的 基类 获取      更新时间:2023-10-16

在下面的代码中,我将如何让基类函数时钟::increment((函数在不修改main((的情况下递增派生的类对象thing2.hrs?如果我在 increment(( 中添加临时 cout 语句,如果我没有创建基对象,调用"thing2.increment(("似乎正在增加基类对象的成员或随机内存点。 在不修改 main(( 中的调用以传递变量(并修改函数(的情况下,是用派生类中的新定义覆盖函数的唯一解决方案吗?

class clocks
{
public:
clocks();
void increment();
private:
int hrs;
};
clocks::clocks()
{
hrs = 1;
}
void clocks::increment()
{
hrs++;
}

class childClock : public clocks
{
public:
childClock();
int hrs;
};
childClock::childClock()
{
hrs = 2;
}

int main()
{
clocks thing;
childClock thing2;
cout << thing2.hrs<<" ";
thing2.increment();
cout << thing2.hrs;
return 0;
}

几件事。

  1. 您不需要子类中的第二个hrs,因为基类已经声明了此成员。
  2. hrs应该受到保护,以便子类可以访问/设置它,并且您可以使用 getter 来访问该值。

按照这些说明,我们可以按如下方式编辑您的代码:

#include <iostream>
class clocks{
public:
clocks();
void increment();
int getHrs();
protected:
int hrs;
};
clocks::clocks(){
hrs = 1;
}
int clocks::getHrs(){
return hrs;
}
void clocks::increment(){
hrs++;
}
class childClock : public clocks{
public:
childClock();
};
childClock::childClock(){
hrs = 2;
}
int main(){
clocks thing;
childClock thing2;
std::cout << thing2.getHrs() <<" ";
thing2.increment();
std::cout << thing2.getHrs();
return 0;
}