// test01.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
/*
c++多态
一、静态-编译器 函数重载
二、多态绑定
1、早绑定 无virtual关键字
2、晚绑定 virtual关键字
*/
class Base
{
public:
Base();
virtual ~Base();
void fun1() {
//早绑定
std::cout << "早绑定 Base::fun1\n";
}
virtual void fun2() {
//晚绑定
std::cout << "晚绑定 Base::fun1\n";
}
//静态多态 函数重载
int sum(int a, int b) {
return a + b;
}
private:
};
Base::Base()
{
std::cout << "Base()\n";
}
Base::~Base()
{
std::cout << "~Base()\n";
}
class Drive : public Base
{
public:
Drive();
virtual ~Drive();
void fun1() {
//早绑定
std::cout << "早绑定 Drive:: fun1\n";
}
void fun2() override{
//晚绑定
std::cout << "晚绑定 Drive:: fun1\n";
}
double sum(double a, double b) {
return a + b;
}
private:
};
Drive::Drive()
{
std::cout << "Drive()\n";
}
Drive::~Drive()
{
std::cout << "~Drive()\n";
}
int main()
{
{
//静态多态
Drive a1;
int mm = a1.sum(10, 20);
double mm01 = a1.sum(5.5, 20.6);
}
//动态多态
Base* p1 = new Drive;
Base*p2 = new Base;
//早绑定 无virtual
p1->fun1();
p2->fun1();
//晚绑定 有 virtual
p1->fun2();
p2->fun2();
delete p1;
}
/*
输出结果:
Base()
Drive()
~Drive()
~Base()
Base()
Drive()
Base()
早绑定 Base::fun1
早绑定 Base::fun1
晚绑定 Drive:: fun1
晚绑定 Base::fun1
~Drive()
~Base()
*/
c++多态八股
于 2024-07-10 14:46:03 首次发布