编译时多态性运行时多态性是这样的吗
Is compile time polymorphism runtime polymorphism like this?
从研究中我学到了什么:
重载、运算符重载和重写就是我们所说的多态性。
多态性意味着同一实体在时表现不同
例如:
参数
add(12, 13);
add(12.2, 13.3);
同一个实体(add())在某些时候表现不同(适用于double,适用于int)
//模板也适用于
特设
Animal dogInstance = new Dog();
Animal catInstance = new Cat();
dogInstance.sound(); //bark
catInstance.sound(); //meow
同一个实体(sound())在不同时间表现不同
soud()将根据什么实例(狗或猫)工作)
重载、模板和泛型发生在编译时(编译时多态性)
重写时,运算符重载发生在运行时(运行时多态性)
参数多态性是指同一代码可以应用于多个数据类型
例如。重载、模板和泛型
特殊多态性是指不同的代码用于不同的数据类型
例如。覆盖,操作员过载
附加问题:
为什么运算符重载ad-hoc(动态绑定)?
还有:
如果你是一名程序员,你应该注意这些事情,比如运行时多态性、编译时多态性,动态链接、静态链接、框架含义,
框架和库之间的区别,什么是重量级框架意味着什么是轻量级框架意味着等等,还是我应该继续编程,只要我的程序能工作?
我会尝试以不同的方式回答您的两个问题。
编译时/运行时:在编译时,编译器只能验证语法正确的内容。这是运行时,它可以执行行为评估。例如
如果有两个扩展
A
的类B
和C
。有一种方法是声明返回CCD_ 4。在你的呼叫者身上,你预计它会回来CCD_ 5的实例。您可以将B
的强制转换返回值键入为(B)A
。编译器不会在这里抱怨任何问题。但如果在运行时,它发现是c
的返回实例,则它将失败。
我在这里试图解释的是:有些行为只能在运行时评估。
编程:当你编写小型教程程序时,你所关心的只是程序的成功和你的基本学习。当您编写更大/高使用率的应用程序时,您必须非常小心。字符串串联、变量选择、迭代次数、对象引用等一切都很重要。
我希望这能有所帮助。
在Java中,即使对于==
,也不会有运算符重载,这会让新手Java程序员感到困惑。
您需要了解基本的多态性原理,但在揭开盖子之前,我会确保您了解编程的所有高级功能。
我不认为什么是重框架或轻框架有一个标准的定义。我认为这主要是一种设计策略,要么将所有内容都包含在一个库中,要么尽可能简单。
- 为什么我们实际上需要运行时多态性?
- 运行时多态性和dynamic_cast需要澄清
- 运行时多态性 - 箭头运算符访问了错误的成员?
- C ++中的方法覆盖:是编译时还是运行时多态性?
- 运行时与编译时多态性:更好的可读性与编译时错误检查,更重要的是
- 两个不同类的运行时多态性
- 考虑 .(点)应用于应该是运行时多态性的东西时
- 编译时多态性运行时多态性是这样的吗
- CRTP的运行时多态性设计和策略
- 查询C++中的运行时多态性
- 需要使用模板解决运行时多态性的帮助
- 为什么不能在编译时解决运行时多态性?
- 尝试使用多态性C++时发生编译错误
- c++与java中运行时多态性的成本比较
- 为什么为模板实例化声明运行时多态性会导致链接器错误
- 编译时与运行时多态性在c++中的优缺点
- 允许运行时和编译时多态性的灵活方式
- c++中通过虚函数实现的运行时多态性
- 虚拟函数是在C++中实现运行时多态性的唯一途径吗
- c++中运行时和编译时多态性的区别