美文网首页
C++继承,多态,模版函数

C++继承,多态,模版函数

作者: 潇洒人生_cca2 | 来源:发表于2020-04-05 10:36 被阅读0次

继承

代码的重用性
父类构造函数先调用,子类的析构函数先调用
父类和子类有重名的函数,是覆盖,并非多态

继承的访问修饰

基类中 继承方式 子类中
public & public继承 = > public
public & protected继承 = > protected
public & private继承 = > private
protected & public继承 = > protected
protected & protected继承 = > protected
protected & private继承 = > private
private & public继承 = > 子类无权访问
private & protected继承 = > 子类无权访问
private & private继承 = > 子类无权访问

class Human{
public:
    Human(char* name, int age){
        this->name = name;
        this->age = age;
    }
    void say(){
        cout << "说话" << endl;
    }
protected:
    char* name;
    int age;
};
//男人
class Man : public Human{
public:
    //给父类构造函数传参,同时给属性对象赋值,":"后面第一个表明调用父类哪个构造方法,接下来是给属性对象赋值
    Man(char *brother, char *s_name, int s_age, char *h_name, int h_age) : Human(s_name, s_age), h(h_name,h_age){
        this->brother = brother;
    }
    //泡妞
    void chasing(){
        cout << "泡妞" << endl;
    }
private:
    //兄弟
    char* brother;
    Human h;
};

void main(){
    Man m1("danny","jack",18,"jason",18);
    m1.Human::say();//调用父类的方法
    m1.Human::age = 10;
    system("pause");
}

继承二异性

虚继承,不同路径继承来的同名成员只有一份拷贝,解决不明确的问题

多态

多态(程序的扩展性)
动态多态:程序运行过程中,决定哪一个函数被调用(重写)
静态多态:重载

发生动态的条件:

1.继承
2.父类的引用或者指针指向子类的对象
3.函数的重写(需要用virtual修饰方法)

纯虚函数(抽象类)

1.当一个类具有一个纯虚函数,这个类就是抽象类
virtual void sayArea() = 0;//纯虚函数
2.抽象类不能实例化对象
3.子类继承抽象类,必须要实现纯虚函数,如果没有,子类也是抽象类
抽象类的作用:为了继承约束,根本不知道未来的实现

接口

只是逻辑上的划分,语法上跟抽象类的写法没有区别

可以当做一个接口
class Drawble{
    virtual void draw();
};

模板函数(泛型)

根据实际类型自动推导

//发现:这两个函数业务逻辑一样,数据类型不一样
template <typename T>
void myswap(T& a, T& b){
    T tmp = 0;
    tmp = a;
    a = b;
    b = tmp;
}

模版类

template<class T>
class A{
public:
    A(T a){
        this->a = a;
    }
protected:
    T a;
};
//继承模版类
class B : public A<int>{
public:
    B(int a,int b) : A<int>(a){
        this->b = b;
    }
private:
    int b;
};
//模版类继承模版类
template <class T>
class C : public A<T>{
public:
    C(T c, T a) : A<T>(a){
        this->c = c;
    }
protected:
    T c;
};

void main(){
    A<int> a(6);
    system("pause");
}

相关文章

  • C++继承,多态,模版函数

    继承 代码的重用性父类构造函数先调用,子类的析构函数先调用父类和子类有重名的函数,是覆盖,并非多态 继承的访问修饰...

  • 深刻剖析之c++博客文章

    三大特性 封装、继承、多态 多态 C++ 虚函数表解析C++多态的实现原理 介绍了类的多态(虚函数和动态/迟绑定)...

  • 2020-07-06----《C++类的学习》

    函数重载:同名不同参。 C++类的特点:封装、继承、多态。 //多态与函数重载是啥关系? 虚函数:和软件架构相关 ...

  • 技能

    C++ C++特性 C++11 多态和继承 构造函数 析构函数 手写代码实现string类 手写代码实现智能指针 ...

  • 深入研究C++多态(虚函数和虚继承)

    面向对象的三大特性是封装、继承和多态。多态是非常重要的一个特性,C++多态基于虚函数和虚继承实现,本文将完整挖掘C...

  • C++语言-多态,纯虚函数,模版函数

    1、虚函数、纯虚函数 需要注意的是,纯虚函数子类是必须继承的,虚函数不是不必须继承的。 2、多态 在C++中默认关...

  • (四)C++中的继承、多态和模板函数

    C++中的继承、多态和模板函数 一、继承 1、属性和方法的继承 继承可以更好的实现代码的重用性 2、通过子类给父类...

  • C++ 虚函数 总结

    虚函数是 C++ 实现多态的方式。 什么是多态?多态性常被视为自封装和继承之后,面向对象的编程的第三个支柱。如果举...

  • 02汇编角度理解虚函数的实现

    面向对象语言的三大特性 封装继承和多态。c++ 中的多态是通过虚函数实现的。我们声明一个Person类,然后 编写...

  • C++知识点(自用)

    关于struct和class c++中的struct可以有成员函数,能继承,能实现多态。。。那struct和cla...

网友评论

      本文标题:C++继承,多态,模版函数

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