精华内容
下载资源
问答
  • 今天小编就为大家分享一篇关于C++/JAVA/C#子类调用父类函数情况总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • C++子类调用父类覆盖的函数

    千次阅读 2013-04-15 11:53:55
    C++子类调用父类覆盖的函数  /*  * main.cpp  * C++子类调用父类覆盖的函数  */  #include class base  {  public:   base(){}   ~base(){}   virtual void print() {printf("i'm base!\...
    C++子类调用父类覆盖的函数 
    /*
     * main.cpp
     * C++子类调用父类覆盖的函数
     */ 
    #include <stdio.h>  
    class base 

    public: 
        base(){} 
        ~base(){} 
        virtual void print() {printf("i'm base!\n");} 
    }; 
     
    class child : public base 

    public: 
        virtual void print(){base::print(); printf("i'm child!\n");} 
    }; 
     
    int main() 

        child p; 
        p.print(); 
        return 0; 
    展开全文
  • C++子类调用父类构造函数

    千次阅读 2016-05-13 11:08:45
     构造方法用来初始化类的对象,与父类的其它成员不同,它不能...因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。 如果没有显式的构造函数,编译器会给一个默认的构

    转自:http://blog.csdn.net/scottly1/article/details/25594439

      构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。

    如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显式地声明构造函数情况下创建。


    构造原则如下:

        1. 如果子类没有定义构造方法,则调用父类的无参数的构造方法。


        2. 如果子类定义了构造方法,不论是无参数还是带参数,在创建子类的对象的时候,首先执行父类无参数的构造方法,然后执行自己的构造方法。


        3. 在创建子类对象时候,如果子类的构造函数没有显示调用父类的构造函数,则会调用父类的默认无参构造函数

        4. 在创建子类对象时候,如果子类的构造函数没有显示调用父类的构造函数且父类自己提供了无参构造函数,则会调用父类自己的无参构造函数。


        5. 在创建子类对象时候,如果子类的构造函数没有显示调用父类的构造函数且父类只定义了自己的有参构造函数,则会出错如果父类只有有参数的构造方法,则子类必须显示调用此带参构造方法)。


        6. 如果子类调用父类带参数的构造方法,需要用初始化父类成员对象的方式,比如:

         

    1. #include <iostream.h>  
    2.  class animal  
    3.  {  
    4.  public:  
    5.    animal(int height, int weight)  
    6.    {  
    7.      cout<<"animal construct"<<endl;  
    8.    }  
    9.    …  
    10.  };  
    11.  class fish:public animal  
    12.  {  
    13.  public:  
    14.    fish():animal(400,300)  
    15.    {  
    16.      cout<<"fish construct"<<endl;  
    17.    }  
    18.    …  
    19.  };  
    20.  void main()  
    21.  {  
    22.    fish fh;  
    23.  }  


    这种初始化方式,还常用来对类中的常量(const)成员进行初始化,如下面的代码所示:

    1. class point  
    2.   {  
    3.   public:  
    4.      point():x(0),y(0)  
    5.   private:  
    6.      const int x;  
    7.      const int y;  
    8.   };  

    展开全文
  • c++ 子类调用父类有参构造函数

    千次阅读 2016-11-16 17:29:04
    (1)多态性 ...父类指针-->子类实例 , 首先调用父类无参构造函数,然后调用子类构造函数。 (3)如果子类构造函数无参数,一切都好办。但是,往往子类构造函数需要参数。那么应该怎么办呢? 可以这么写:子

    (1)多态性

    在C++或者Java中,多态性其中一个好处是减少代码量。子类越多,越明显。

    (2)构造函数的调用

    FatherClass  *pt = new ChildClass;

    父类指针-->子类实例 , 首先调用父类构造函数,然后调用子类构造函数。

    (3)如果子类构造函数无参数,一切都好办。但是,往往子类构造函数需要参数。那么应该怎么办呢?

    可以这么写:子类构造函数名(子类总参数列表):父类构造函数名(参数列表)

    (4)代码示例:

     

    class Student {
        public:
            Student(char nam)
            {
                name = nam;
            }
            ~Student(){}
        protected:
            string name;
        }
    
    class Student1:public Student{
    public :
        Student1(string nam, int num):Student(nam)
        {
            age = num;
        }
        ~Student1(){}
    protected:
        int age;
    }


    (5)调用顺序

     

    a.如果子类没有显示调用父类含参数的构造函数,那么在子类实例化过程中,

    ---顺序: 父类无参(默认)构造函数-->子类被调用的构造函数。

    b.如果子类显示调用了父类的含参构造函数,那么在子类实例化过程中,

    ---顺序: 父类有参构造函数-->子类被调用的构造函数。

     

    经典代码例子如下:

     

    class A {
    public:
        A() { printf("A(void) \n"); }
        A(int d) { printf("A %d\n", d); }
        ~A() { printf(" ~A \n"); }
    };
    
    class B : public A
    {
    public:
        B(){
            printf("B(void) \n");
        }
    
        B(int x) : A(x)
        {
            printf("B \n");
        }
        ~B() { printf("~B \n"); }
    };
    
    int main(int argc, char* argv[])
    {
        B c;
        B b(8); // 此处也自动调用了A的同签名的构造函数
        printf("Hello World!\n");
        getchar();
        return 0;
    }

     

     

     

     

     

    输出结果:

     

    一句一句分析:

    B  c;         

    //首先调用A的无参(默认)构造函数,然后调用B的无参构造函数。

    //所以先输出A(void),然后是B(void)

     

    B  b(8);    

    //首先调用A的有参构造函数,然后调用B的有参构造函数。

    //所以先输出A 8,然后是B

     

     

    如果,没有显示调用A的有参构造函数呢? 

    答案是:不会调用A的有参构造函数,只会调用A的无参(默认)构造函数。如下图:

     

     

     

     

    ========================

     

     

     

    展开全文
  • c++ 子类函数调用父类函数

    千次阅读 2020-05-20 22:10:05
    在多态中,假设子类重写了父类的虚函数,而在这个子类的虚函数中想要调一下父类的这个虚函数(因为父类函数一般完成一些基本的功能),这时的调用方法: 父类名+ 域操作符号 + 函数。 class Base{ public: ...

    知行合一 -- 王阳明


    在多态中,假设子类重写了父类的虚函数,而在这个子类的虚函数中想要调一下父类的这个虚函数(因为父类的函数一般完成一些基本的功能),这时的调用方法:    父类名+ 域操作符号 + 函数。

    class Base{
    
    public:
    
        virtual func(){
    
         }
    
    };
    
    class A: public Base
    {
    
    public:
    
        virtual func(){
            Base::func();
            //.......
    
         }
    
    };
    
    

     

    Note:

    面试真题啊。

     

    展开全文
  • 如果c++父类的那个变量或者函数声明为virtual虚函数,那么子类对象的同名函数就直接覆盖了(即在内存中真正的覆盖,父类的这个函数已经不在了)父类对象的这个函数 如果没有声明父类函数为virtual,那么子类对象...
  • #include #include using namespace std;   //父类 class Parent { public:  Parent(){};  void SetX(int x){m_x = x;};  void SetY(int y){m_y = y;};  ~Parent(){}; Private:
  • 还有一种情况是是析构函数是虚函数,结果是:析构函数调用子类-》父类,不过内部原理不一样 delete a时调用类型A的析构函数步骤如下: 1,到虚函数映射表中查找A的实际析构函数; 2,发现被实例化为B的析构函数...
  • 时间久了就容易记不清了,特留存备用查看 c++ 1.构造函数调用 常用初始化列表 或者显示调用 1.1同一个类中构造函数调用构造函数 尽量不要这样做,...1.2子类构造函数调用基类构造函数 -----基类有默认构造函数...
  • 主要介绍了C++类继承之子类调用父类的构造函数的实例详解的相关资料,希望通过本文大家能够掌握C++类继承的相关知识,需要的朋友可以参考下
  • 子类父类只要函数名相同,没有virtual关键字,则子类的对象没有办法调用父类的同名函数,父类的同名函数被隐藏了,也可以强制调用父类的同名函数class::funtion_name。 子类父类参数不同,函数名相同,有...
  • C++ | 子类对象调用父类函数

    千次阅读 2020-09-24 09:04:04
    C++中子类对象调用父类函数可通过域操作符(::)来实现,表明所调用函数的作用域。 //test.cc #include <iostream> using namespace std; class A { public: virtual void func() { cout <<" this...
  • c++子类父类同名成员函数

    千次阅读 2014-09-27 14:23:29
    c++子类父类成员函数重名 子类和父类返回值参数相同,函数名相同,有virtual关键字,则由对象的类型决定调用哪个函数。子类和父类只要函数名相同,没有virtual关键字,则子类的对象没有办法调用父类...
  • C++ Person中age为私有的,通过Persron::getAge()可以获取age的值。 #include using namespace std; class Person { public: Person(int a) { this->age = a; } int getAge() { return age; } ...
  • 2.父类子类都只有有默认构造函数(或无参构造),则先调用父类构造,在调用子类构造 #include<iostream> using namespace std; class a { public : a() { cout << "a类" << endl; } }; ...
  • C++基础之子类调用父类方法

    万次阅读 2018-05-29 20:50:52
    25行想通过子类调用父类函数fun(int i),通过B1.A::fun(1),看到过有的人说用B1.parent::fun(1) 试了下发现出错3. 子类和父类函数名一样的函数fun,如果参数不一样,不管加不加virtual,当子类调用fun()时,会先...
  • 子类对象通过super()函数调用父类的run函数,然后直接调用子类的demo函数,而没有调用父类函数;猜想通过super调用父类,但self仍然代表是子类本身; 再看一例: 从这里说明self代表是子类本身;super的直接将...
  •  C++的虚函数主要作用是“运行时多态”,父类中提供虚函数的实现,为子类提供默认的函数实现。子类可以重写父类的虚函数实现子类的特殊化。 2、纯虚函数:  C++中包含纯虚函数的类,被称为是“抽象类”。抽象类...
  • 首先要了解子类调用构造函数过程:父类构造函数–>子类构造函数 1.父类有默认构造函数,子类未显示调用时,子类自动调用父类的默认构造函数; #include <iostream> using namespace std; class ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 111,242
精华内容 44,496
关键字:

c++子类调用父类函数

c++ 订阅