|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
覆盖
我们知道,当子类采用继承过来的基类的方法的时候,该方法对于所有子类都是一样的,可是,对于同一种方法,它存在于每一个子类,但又有所不同,该怎么办,这时候就利用到了覆盖
覆盖方法:在子类内再声明,再重新写实现方式(也就是cv大法再改改就ok了)
- #include <iostream>
- #include<string>
- class Computer
- {
- public:
- void print_num();
- };
- class Ipad: public Computer
- {
- public:
- void print_num();
- };
- void Computer::print_num()
- {
- std::cout << "1" << std::endl;
- }
- void Ipad::print_num()
- {
- std::cout << "2" << std::endl;
- }
- int main()
- {
- Ipad myipad;
- myipad.print_num();
-
- return 0;
- }
复制代码
最后输出的结果是 2 ,而不是1,覆盖使得子类方法的实现方式不同于基类,从而使得不同子类在同一类方法内有不同的实现方式;
重载
重载就是对同名方法,但有对有不同的传入参数有不同的实现方式;
重载方法:在同名方法下再定义一个有参数的,再写实现(cv大法再加点参数再改改实现)
- #include <iostream>
- #include<string>
- class Computer
- {
- public:
- void print_num();
- void print_num(int num);
- };
- class Ipad: public Computer
- {
- public:
- };
- void Computer::print_num()
- {
- std::cout << "1" << std::endl;
- }
- void Computer::print_num(int num)
- {
- std::cout << num << std::endl;
- }
- int main()
- {
- Ipad myipad;
- myipad.print_num();
- myipad.print_num(15);
-
- return 0;
- }
复制代码
相信你很容易理解
混合的错误
- #include <iostream>
- #include<string>
- class Computer
- {
- public:
- void print_num();
- void print_num(int num);
- };
- class Ipad: public Computer
- {
- public:
- void print_num();
-
- };
- void Computer::print_num()
- {
- std::cout << "1" << std::endl;
- }
- void Computer::print_num(int num)
- {
- std::cout << num << std::endl;
- }
- void Ipad::print_num()
- {
- std::cout << "2" << std::endl;
- }
- int main()
- {
- Ipad myipad;
- myipad.print_num();
- myipad.print_num(15);
-
- return 0;
- }
复制代码
编译后会报错,因为使用了覆盖之后,就无法使用到基类的重载方法,解决方法:在子类再声明,然后再次写实现。 |
|