我正在尝试在c ++中使用子类。
我对使用它有一些疑问。
如何调用父的initProcess方法?
如何打印父级的实例地址?
=====================以下是ClassA(父类)=================== ========
class ClassA
{
public:
ClassA();
~ClassA();
void ClassA::initProcess();
};
ClassA::ClassA(){}
ClassA::~ClassA(){}
void ClassA::initProcess()
{
}
=================以下是ClassA的子类ClassB ================
class ClassB : public ClassA
{
public:
ClassB();
~ClassB();
void ClassB::initProcess();
};
ClassB::ClassB(){}
ClassB::~ClassB(){}
void ClassB::initProcess()
{
ClassA::initProcess(); // <-- Is this correct to access ClassB's parent method?
printf("ClassA is : %d", ClassA???); // <-- How to print parent's instance (ClassA) address?
}
答案 0 :(得分:0)
ClassA的:: initProcess(); //&lt; - 访问ClassB是否正确 父方法?
是的,这是调用基类方法initProcess()
的正确方法。
printf("ClassA is : %d", ClassA???); // <-- How to print parent's instance (ClassA) address?
我认为代码行应该是这样的:
printf("ClassA is : %p", dynamic_cast<ClassA*>(this));
但是,你为什么要这样做?
答案 1 :(得分:0)
ClassA::initProcess(); // <-- Is this correct to access ClassB's parent method?
这是调用基类的正确方法。
如何打印父实例(ClassA)地址?
基类的实例是子类的实例。这里有一些工作代码来说明这一点。
#include <cstdio>
class ClassA
{
public:
ClassA();
~ClassA();
void initProcess();
};
ClassA::ClassA(){}
ClassA::~ClassA(){}
void ClassA::initProcess()
{
printf("Class A address: %d\n", dynamic_cast<ClassA*>(this));
}
class ClassB : public ClassA
{
public:
ClassB();
~ClassB();
void initProcess();
};
ClassB::ClassB(){}
ClassB::~ClassB(){}
void ClassB::initProcess()
{
ClassA::initProcess();
printf("Class B address: %d\n", this);
}
int main()
{
ClassB b;
b.initProcess();
return 0;
}