美文网首页
委托构造和继承构造

委托构造和继承构造

作者: arkliu | 来源:发表于2022-11-24 08:53 被阅读0次

委托构造

委托构造函数就是在一个构造函数的初始化列表中,调用另一个构造函数。

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

class AA {
    private:
        int m_a;
        int m_b;
        double m_c;
    public:
        AA(double c) {
            m_c = c+3;
            cout <<"AA(double c)"<<endl;
        }
        AA(int a, int b) {
            m_a = a + 1;
            m_b = b + 1;
            cout <<"AA(int a, int b)"<<endl;
        }

        AA(int a, int b, const string& str):AA(a, b) {
            cout <<"m_a = "<<m_a<<"  m_b="<<m_b<<"  str = "<<str<<endl;
        }

        AA(double c, const string& str):AA(c) {
            cout <<"m_c = "<<m_c<<"  str = "<<str<<endl;
        }
};

int main()
{
    AA aa(11,22, "张三");
    AA aa2(4.5, "李思");
}
image.png

继承构造

c11推出了继承构造,在派生类中,使用using来声明继承基类的构造函数。

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

class AA {
    public:
        int m_a;
        int m_b;
        AA(int a):m_a(a) {
            cout <<"AA(int a)"<<endl;
        }
        AA(int a, int b):m_a(a),m_b(b) {
            cout <<"AA(int a, int b)"<<endl;
        }
};

class BB:public AA {
    public:
        double m_c;
        using AA::AA;//使用基类的构造函数

        // BB的构造函数会先调用父类AA的构造函数
        BB(int a, int b, double c):AA(a,b),m_c(c) {
            cout <<"BB(int a, int b, int c)"<<endl;
        }
        void show() {
            cout <<"m_a="<<m_a<<"  m_b="<<m_b<<"  m_c="<<m_c<<endl;
        }
};

int main()
{
    BB b1(10);// 使用基类有一个参数的构造函数,初始化m_a
    b1.show();

    BB b2(11,22);// 使用基类有两个参数的构造函数,初始化m_a m_b
    b2.show();

    BB b3(23,44,30.3);// 使用基类有两个参数的构造函数,初始化m_a m_b,同时初始化m_c
    b3.show();
}

相关文章

  • ★04.关于委托构造函数

    简单示例 普通情况 继承中 注意事项 委托构造函数与继承中的继承构造函数非同一概念。

  • [GeekBand]第三周学习笔记

    继承、组合、委托 Composition (组合),表示has-a 组合关系下的构造和析构 构造由内而外 Cont...

  • c++11 继承构造函数和委托构造函数

    1 继承构造函数 1.1 为什么需要继承构造函数 子类为完成基类初始化,在C++11之前,需要在初始化列表调用基类...

  • ES5 和 ES6 继承比较:

    ES5构造函数和继承: ES6构造函数和继承:

  • 继承和构造

    子类构造器的特点: 所有的子类在构造时必须,一定会调用父类的构造方法,若没有显式地调用父类构造方法,那么系统默认调...

  • Geekband C++ Week3 Notes

    面向对象编程 对象之间的关系继承组合委托 组合关系表达了has-a的关系组合关系下的构造和析构构造由内向外析构由外...

  • 浅谈javaScript继承

    原型和构造函数 prototype属性对Object添加属性和方法 构造函数实例化过程 原型和继承 简单继承 继承

  • Javascript如何实现继承

    构造函数继承 原型构造函数组合继承

  • Initialization in Swift

    简介 *自定义构造过程 *默认构造器 *值类型的构造器代理 *类的继承和构造过程 *可失败构造器 *必需构造器 *...

  • js的继承方式

    1 类式继承 子类的原型对象 2 构造函数继承 创建即继承 3 组合继承 (类式继承和构造函数...

网友评论

      本文标题:委托构造和继承构造

      本文链接:https://www.haomeiwen.com/subject/wprnxdtx.html