子类重定义父类方法调用父类方法

子类重定义父类方法只能调用自己的方法 。父类的同名函数被覆盖。(只要函数名相同就构成重定义)。要调用父类的。必须用作用域。

#include<iostream>
#include<string>
using namespace std;

class MyStr
{
private:
    char *name;
    int id;
public:
    MyStr() {}
    MyStr(int a) {
        cout<< a<<endl;
    }
    void fun(){

        cout<<"biss"<<endl;
    }
};
class allen: public MyStr
{
public:
    void fun(int a){
         MyStr::fun();
        cout<<"sun"<<endl;
    }
};
int main()
{
    allen allen1;
    allen1.fun(100);
    allen1.MyStr::fun();//只能这样

}

原文地址:http://blog.51cto.com/haidragon/2070855

时间: 2024-10-12 10:11:10

子类重定义父类方法调用父类方法的相关文章

在子类中,若要调用父类中被覆盖的方法,可以使用super关键字

在子类中,若要调用父类中被覆盖的方法,可以使用super关键字. package text; class Parent {    int x;    public Parent()    {                    System.out.println("Parent Created1");      }    public void show(){        System.out.println("Parent Created2");    }

Java基础系列 - 子类继承父类,调用父类的构造函数

package com.test7; public class test7 { public static void main(String[] args) { Son son = new Son(1000, "张三"); /** * 打印显示 Father的构造函数1000 张三 Son的构造函数1000 张三 */ } } class Father { private int userId; private String userName; public Father(int us

JavaSE8基础 多态 子类没有重写 父类引用调用父类中的方法

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: class Father { public int num = 1; public void sayHello() { System.out.println("hello"); } public static void staticFun() { System.out.println("s

子类构造函数是否会默认调用父类的无参构造函数

1 package test; 2 3 public class TestB { 4 5 public TestB() { 6 System.out.println("TestB的无参构造函数..."); 7 } 8 9 } 1 package test; 2 3 public class TestA extends TestB { 4 5 public TestA(int i) { 6 System.out.println(i); 7 } 8 9 public static void

子类构造、析构时调用父类的构造、析构函数顺序

析构函数调用的次序是先派生类的析构后基类的析构,也就是说在基类的的析构调用的时候,派生类的信息已经全部销毁了. 而定义一个对象时先调用基类的构造函数.然后调用派生类的构造函数:析构的时候恰好相反:先调用派生类的析构函数.然后调用基类的析构函数. 原因: 派生类构造函数中的某些初始化可能是基于基类的,所以规定构造在类层次的最根处开始,而在每一层,首先调用基类构造函数,然后调用成员对象构造函数(因为C++的成员变量是不会自动初始化的,只能使用初始化列表初始化(调用成员的构造函数)或在本层构造函数内初

关于模版子类初始化模版父类,调用父类成员问题(未解决)

#include<iostream> using namespace std; template <typename T> class Parent { public: Parent(T p1) { this->p1 = p1; } void printP() { cout << "p1==" << p1 << endl; } protected: T p1; }; template <typename U>

子类继承和调用父类的构造方法

1. 如果子类没有定义构造方法,则调用父类的无参数的构造方法,. 2. 如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法. 3. 如果子类调用父类带参数的构造方法,可以通过super(参数)调用所需要的父类的构造方法,切该语句做为子类构造方法中的第一条语句. 4. 如果某个构造方法调用类中的其他的构造方法,则可以用this(参数),切该语句放在构造方法的第一条. 说白了:原则就是,先调用父亲的.(没有就默认调,有了就按有

子类继承和调用父类的构造方法 (转)

子类继承和调用父类的构造方法1.如果子类没有定义构造方法,则调用父类的无参数的构造方法,.2.如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法.3.如果子类调用父类带参数的构造方法,可以通过super(参数)调用所需要的父类的构造方法,切该语句做为子类构造方法中的第一条语句.4.如果某个构造方法调用类中的其他的构造方法,则可以用this(参数),切该语句放在构造方法的第一条.说白了:原则就是,先调用父亲的.(没有就默认调

python基础之继承实现原理、子类调用父类的方法、封装

继承实现原理 python中的类可以同时继承多个父类,继承的顺序有两种:深度优先和广度优先. 一般来讲,经典类在多继承的情况下会按照深度优先的方式查找,新式类会按照广度优先的方式查找 示例解析: 没有共同头部父类的类型 1 class E: 2 def test(self): 3 print('from E') 4 # pass 5 class F: 6 def test(self): 7 print('from F') 8 # pass 9 10 class C: 11 def test(se