C++中的方法重写是否总是在派生类的标头中完成?
Is methods overriding in C++ always done in a derived class's header?
对不起,我一直在学习c++一段时间,从Ivor Horton的《Visual c++》一书中我看到,当扩展一些类时,方法重写是在派生类的头文件中完成的。我还没有发现任何可以在.cpp文件中完成的示例。所以我的问题是,如果.cpp文件只能包含当前类的"本机"方法?还有一种方法可以重写父方法
方法重写基本上是为了实现多态行为,其中派生类重新实现适合其自己使用的基类方法。所以是的,通常方法在派生类中被重写。
顺便说一下,通常方法是在头文件中声明, 在源文件中定义,所以我不确定你到底是什么意思。可能,你应该看看这个,
定义和声明的区别是什么?
我看到当扩展某些类时,方法重写是在派生类的头文件中完成的。
不是本质上。头文件是用来声明和实现源文件的。这并不重要,即使是多态方法或本机成员函数。
您可以随意使用。h和。cpp。可以在。h和。cpp中同时使用声明和定义。不是说你应该,但你可以。Cpp是由编译器编译的,如果你在Cpp中包含你的。h,它也会被编译。所以回答你的问题,是的,你可以在cpp中重写。
的例子:
A.h
class A{
public:
A() {};//definition and declaration in header
virtual void foo() {};
};
B.cpp
#include "A.h"
class B : public A{
public:
B() {};//definition and declaration in source file
virtual void foo() {};
};
int main()
{
A* pA = new B;
pA->foo(); //will call foo from B
return 0;
}
然而,B只在B.cpp
中可见。别这么想!
相关文章:
- 在 C++ 中用派生类型重写成员函数
- 派生类调用父类的方法,该方法调用重写的虚拟方法调用错误的方法
- 重写派生类中的二元运算符
- 具有派生参数的函数重写
- 我无法重写基类的方法,因为我的派生类是模板化的
- 派生类中的私有重写虚函数
- 哪个基类调用派生重写的方法?
- 不要重写派生类中的纯虚函数
- 基类能否知道派生类是否已重写虚拟方法
- 是否有可能有一个派生类继承最终函数但创建相同的函数(而不是重写)
- Qt/C++ - 从派生类调用重写方法
- 重写派生类中的枚举值
- 使派生类使用重写运算符
- C ++中有没有办法让派生类重写基类静态方法
- 重写派生类中的模板基方法?
- 在派生类中重写哪个基类的虚拟析构函数
- 在多级继承中重写,中间派生类未覆盖函数
- 有没有一种技术可以使虚函数在所有派生类中强制重写?
- 在继承时用指向派生类的指针重写指向基类的指针
- 是否可以在不重写派生类中记录虚拟成员?