函数重载
是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型
#include "pch.h"
#include <iostream>
#include <fstream>
#include <memory>
#include <vector>
#include <string>
using namespace std;
class base
{
public:
base()
{
std::cout << "class base has created\n";
};
void show()
{
std::cout << "class:base\n";
};
void show(string name)
{
std::cout << "class:base-name:" + name+ '\n';
};
void show(int age)
{
std::cout << "class:base-age:" + age + '\n';
};
};
int main()
{
base BS;
BS.show();
BS.show("Lihua");
}
class base has created
class:base
class:base-name:Lihua
函数重写
继承类重写基类中的方法,实现方法是在基类中要重写的函数前加关键字virtual,如果基类声明中该函数被重载了则在继承类中必须全部重写对应的方法!否则基类中未被重写的方法将被覆盖,即:派生类对象不可以使用这些未被重写而被覆盖的方法
// CClearn.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include "pch.h"
#include <iostream>
#include <fstream>
#include <memory>
#include <vector>
#include <string>
using namespace std;
class base
{
public:
base()
{
std::cout << "class base has created\n";
};
virtual void show()
{
std::cout << "class:base\n";
};
virtual void show(string name)
{
std::cout << "class:base-name:" + name+ '\n';
};
};
class student :public base
{
public:
virtual void show(string name)
{
std::cout << "class:student-name:" + name + '\n';
};
};
int main()
{
base BS;
BS.show();
BS.show("Lihua");
student std;
//std.show();
std.show("xiaoming");
}
class base has created
class:base
class:base-name:Lihua
class base has created
class:student-name:xiaoming
函数重定义
在继承类中重写基类函数,如果基类中对应函数前没有关键字virutual 则基类方法被覆盖,派生类对象无法使用基类对应的方法
#include "pch.h"
#include <iostream>
#include <fstream>
#include <memory>
#include <vector>
#include <string>
using namespace std;
class base
{
public:
base()
{
std::cout << "class base has created\n";
};
void show()
{
std::cout << "class:base\n";
};
void show(string name)
{
std::cout << "class:base-name:" + name+ '\n';
};
};
class student :public base
{
public:
void show(int age)
{
std::cout << "class:student-age:";
std::cout << age;
};
};
int main()
{
base BS;
BS.show();
BS.show("Lihua");
student std;
//std.show();
std.show(19);
}
class base has created
class:base
class:base-name:Lihua
class base has created
class:student-age:19