精华内容
下载资源
问答
  • 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++基础之子类调用父类方法

    万次阅读 2018-05-29 20:50:52
    25行想通过子类调用父类函数fun(int i),通过B1.A::fun(1),看到过有的人说用B1.parent::fun(1) 试了下发现出错3. 子类和父类函数名一样的函数fun,如果参数不一样,不管加不加virtual,当子类调用fun()时,会先...

    结果:



    结果


    效果一样,想要说明一下三点:

    1. vs里成员函数的函数体就算只有一条语句也要加花括号,如第7-9行

    2. 25行想通过子类调用父类函数fun(int i),通过B1.A::fun(1),看到过有的人说用B1.parent::fun(1)

        试了下发现出错

    3. 子类和父类函数名一样的函数fun,如果参数不一样,不管加不加virtual,当子类调用fun()时,会先在子类中找,找不到会报      错。

      

    展开全文
  • 一般情况下构造函数调用父类-》子类;析构函数调用子类-》父类 比如这么写  B *a=new B(); 先 析构 B类 再析构A类  但如果是上面那种写法 A *a= new  B();    delete  a;   ,...
  • 子类构造方法调用父类时突然提示出错 ![图片说明](https://img-ask.csdn.net/upload/201712/31/1514688592_781896.png) 调用时如下 ![图片说明](https://img-ask.csdn.net/upload/201712/31/1514688640_896382.png...
  • 子类调用父类方法c++和java的不同

    千次阅读 2014-01-31 14:35:47
    子类调用父类方法c++和java的不同   bool GameScene::init(){ if (!Scene::init()) { return false; } } 我自定义了一个场景,在场景的初始化中,有这么一句: Scene::init() 到这里,我百思不得其解,为...
  • 最近一个小问题甚是迷惑我,让我思考了很久,最后做了一个实验,结果一下思路就通了,所以呢,我们如果对于一个问题不是很懂,不妨自己去验证一下,你会得到意想不到的结果,今天我们就来谈一下在子类调用父类构造方法的问题...
  • C++ Person中age为私有的,通过Persron::getAge()可以获取age的值。 #include using namespace std; class Person { public: Person(int a) { this->age = a; } int getAge() { return age; } ...
  • 主要介绍了C++类继承之子类调用父类的构造函数的实例详解的相关资料,希望通过本文大家能够掌握C++类继承的相关知识,需要的朋友可以参考下
  • 第一种方式就是子类重写父类的方法,在子类中定义和父类同样的方法方法体中调用父类方法 父类代码 #pragma once #include "CClientSocket.h" class CTCPInterface { public: CTCPInterface(); ~...
  • 今天小编就为大家分享一篇关于C++/JAVA/C#子类调用父类函数情况总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 子类调用父类方法(super关键字)

    千次阅读 2018-02-28 21:36:59
    package testextends; public class Pad3 extends Computer3{ //子类:平板电脑 String sayhello(){ //重写父类方法‘打招呼’ ...//调用父类方法并添加字符串 } public static void main(Strin...
  • C++子类执行父类方法

    千次阅读 2017-07-15 11:27:42
    需要注意的是C++的语法, 子类若有形参/名字均与父类相同的方法实现, 那么此方法将会覆盖父类方法, 也就是说当调用子类方法时, 不会再执行父类方法了, 而类的构造/析构又不一样, 是会继承执行的.  比如父类...
  • C++ 子类父类 父类确定子类

    千次阅读 2016-10-01 18:38:26
    将一个结构体转换为字节数组,再讲字节数组还原成结构体,子类转换为父类,通过父类信息确定是哪个子类转换的父类
  • 类的继承 方法的重写 子类调用父类方法 多态 虚函数 虚函数示例 纯虚函数 相关代码
  • 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则error;如果有,调用子类的同名方法。 example: package demo; public class people { public people(){ } public void run(){ System....
  • C++子类父类方法的覆盖

    千次阅读 2008-06-25 14:34:40
    昨天看《C++高级编程》,其中讲到了子类可以覆盖父类中的私有方法。当时吓了一跳,如果我用了一个第三方的库,继承了里面的某个类,自己写了个私有方法都得慎之又慎,一不小心可就覆盖了它的私有方法,谁知道会出现...
  • 子类和父类只要函数名相同,没有virtual关键字,则子类的对象没有办法调用到父类的同名函数,父类的同名函数被隐藏了,也可以强制调用父类的同名函数class::funtion_name。 子类和父类参数不同,函数名相同,有...
  • c++子类父类同名成员函数

    千次阅读 2014-09-27 14:23:29
    c++子类父类成员函数重名 子类和父类返回值参数相同,函数名相同,有virtual关键字,则由对象的类型决定调用哪个函数。子类和父类只要函数名相同,没有virtual关键字,则子类的对象没有办法调用父类...
  • public class T1 { private int a=6; public void ha(){ System.out.println(this.a); } }   public class T2 extends T1{ ...结论:子类调用父类方法时,方法中的变量用父类的  
  • c++ 子类函数调用父类函数

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

    2020-08-08 13:59:56
    Qt 子类调用父类的ui ​ 首先,子类要包含父类的头文件和ui头文件 然后,通过构造的方式把父类指针传递给传递给子类*(最优方法,其他的也可以)* #ifndef MEWEB_H #define MEWEB_H //首先 #include <mexplore.h...
  • 如果c++父类的那个变量或者函数声明为virtual虚函数,那么子类对象的同名函数就直接覆盖了(即在内存中真正的覆盖,父类的这个函数已经不在了)父类对象的这个函数 如果没有声明父类函数为virtual,那么子类对象...
  • 因此父类子类的初始化方法都是这个,如果子类不实现这个函数,初始化时调用父类的初始化函数,如果子类实现这个函数,就覆盖了父类的这个函数,既然继承父类,就要在这个函数里显式调用一下父类的__init__(),这跟...
  • C++子类显示调用父类的构造函数

    千次阅读 2016-03-18 21:09:27
    C++子类显示调用父类的构造函数 加入有父类是这样定义的: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 class ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 85,392
精华内容 34,156
关键字:

c++子类调用父类方法

c++ 订阅