c++子类覆盖重载函数

前言

和普通函数一样,类的成员函数也可以被重载,不仅在这个类里面可以被重载,你也可以在子类中重载它,并且保持父类的函数的可见性。正常情况下,如果你在子类中定义了相同名字的函数,那么你基于子类对象就只能调用子类它自己的那个函数,当然了,你也可以使用derive_obj.Base::func()这种方式。不过你也可以在子类中用using声明要重载的函数,使用重载。

代码1

#include<iostream>
using namespace std;

#include<string>

class Animal
{
    
    
public:
	void bark(const string& animal_name) {
    
    
		cout << "animal name: " << animal_name << endl;
	}

	void bark(int bark_num) {
    
    
		cout << "animal bark num: " << bark_num << endl;
	}
};

class Dog : public Animal
{
    
    
public:
	using Animal::bark; // 声明要重载的函数
	void bark(char dogc) {
    
    
		cout << "dog c: " << dogc << endl;
	}
};


int main()
{
    
    
	Dog dog;
	dog.bark("dog"); // 子类就可以使用父类的重载函数

	return 0;
}

代码2

或者这样直接调用父类的函数。

#include<iostream>
using namespace std;

#include<string>

class Animal
{
    
    
public:
	void bark(const string& animal_name) {
    
    
		cout << "animal name: " << animal_name << endl;
	}

	void bark(int bark_num) {
    
    
		cout << "animal bark num: " << bark_num << endl;
	}
};

class Dog : public Animal
{
    
    
public:
	// using Animal::bark;
	void bark(char dogc) {
    
    
		cout << "dog c: " << dogc << endl;
	}
};



int main()
{
    
    
	Dog dog;
	dog.Animal::bark("dog");

	return 0;
}

猜你喜欢

转载自blog.csdn.net/sdhdsf132452/article/details/129860686
今日推荐