C++重载05

一、函数复写

        1、char *mystrcpy(char *dest, const char *src);

char *mystrcpy(char *dest, const char *src)
{
    char *tmp = dest;
    while (*dest++ = *src++);
    return tmp;
}

        2、char *mystrcat(char *dest, const char *src);

char *mystrcat(char *dest, const char *src)
{
    char *tmp = dest;
    while (*dest) {
        dest++;
    }
    while (*dest++ = *src++);
    return tmp;
}

        3、int mystrcmp(const char *s1, const char *s2);

int mystrcmp(const char *s1, const char *s2)
{
    const char *d1 = s1;
    const char *d2 = s2;
    while (*d1 && *d2 && *d1++ == *d2++);
    return *d1 - *d2;
}

        4、size_t mystrlen(const char *s);

size_t mystrlen(const char *s)
{
    const char *tmp = s;
    size_t len = 0;
    
    while (*tmp) {
        tmp++;
        len++;
    }
    
    return len;
}

二、温故知新

        1、继承

                1)简介

                    一个新的类获得了已有类的属性和方法,这个形式就是继承

                【1】新的类称为子类或者派生类

                【2】已有的类称为父类或者基类

                  书写格式:

class 派生类名 : 访问修饰符 基类名

{

};

                2)方式                     
继承方式 基类成员属性 派生类成员属性
public public public
protected protected
private 不可见
protected public protected
protected protected
private 不可见
private public private
protected private
private 不可见
                3)继承-----构造函数与析构函数

                        派生类不继承基类的构造函数,是通过调用基类的构造方法来给继承的成员进行初始化。

                        构造函数的调用顺序:先调用基类的构造函数,再调用派生类的 构造函数。

                        派生类不继承基类的析构函数,与构造函数不同,编译器在继承关系中知道如何调用析构函数。

                        析构函数的调用顺序和构造函数的调用顺序相反。

                4)基类和派生类的函数重名

                    注意:

                        【1】派生类的同名函数遮蔽掉了基类的同名函数,在派生类中,这两个函数都存在。

                        【2】直接调用同名函数,默认访问的是自身类中的函数,如果想要调用基类中的函数需要通过类名指定调用。

                5)多继承

                    C++支持多继承关系,一个派生类可以有多个基类,派生类可以继承多个基类的成员。

                    如果多继承的两个基类中有重名的函数,在派生类中可以通过基类的类名进行指定。

                6)虚继承

                    虚继承是多继承中特有的概念,如:菱形继承

                    在零菱形继承中,为了避免在派生类中出现间接基类的成员出现双份,可以使用一个关键字来修饰-----virtual

                    使用virtual关键字的继承关系就是虚继承,常用于菱形继承中。

        2、多态

                1)概念

                        同一个指针,指向基类调用的是基类方法,指向派生类调用的是派生类方法。

                2)多态的条件

                        【1】基类的成员函数一定要用virtual修饰为虚函数,派生类的成员函数可以有virtual修饰,也可以没有。

                        【2】派生类中的虚函数必须重写基类方法,函数名一样,返回值一样,参数列表一样。

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值