zoukankan      html  css  js  c++  java
  • C++中继承与抽象类

    继承语法格式如下:

    class 子类名称 : 继承方式(public private protected 三种) 父类名称

    纯虚函数格式: virtual 返回值类型 函数名(参数列表)= 0;
    含有纯虚函数的类称为抽象类,
    抽象类不能进行实例,抽象类指针对象可以指向子类

    int main()
    {
    /*
    Animal *A;
    Dog dog;
    Cat cat;
    A = &dog;
    A->run();
    A = &cat;
    A->run();
    system("pause");
    */
    Animal *dog = new Dog();
    Animal *cat = new Cat();
    dog->run();
    cat->run();
    delete dog;
    delete cat;
    dog = NULL;
    cat = NULL;
    system("pause");
    return 0;
    }

    MFC(Microsoft  Fundation  Class):微软基础类库

    CSting:CString是MFC或者ATL中的实现,是MFC里面封装的一个关于字符串处理的功能很强大的类,只有支持MFC的工程才可以使用。如在linux上的工程就不能用CString了,只能用标准C++中的string类了。在MFC中使用不需要自己加,但在另外的程序中需要加入#include<CString>。

    string:string类既是一个标准c++的类库,同时也是STL(Standard Template Library,标准模版库)中的类库,已经纳入C++标准之中。它和CString有本质的区别。

    string.h:C语言里面关于字符数组的函数定义的头文件,常用函数有strlen、strcmp、strcpy等等,这个头文件跟C++的string类半点关系也没有,所以 <string>并非 <string.h>的“升级版本”,他们是毫无关系的两个头文件。

    综上,cout函数重载的是string类库中的string类型,而不是CString或string.h中的。

    而在MFC中或你包含的是CString头文件,如果想用cout输出string 类型,则需要先把string类型转换char*型

    继承的可访问性

    1.公有继承(public)

    当类的继承方式为pulic时候,基类的公有成员和保护成员的访问属性在派生类中保持不变,而基类的私有成员不可访问;

    2、私有继承(privated)//父类里面的都变为私有成员或方法了

    当类的继承方式为privated时候,基类的公有成员和保护成员都以私有成员的身份出现在派生类中,而基类的私有成员在派生类中不可访问。

    2、保护继承(protected)//父类里面的都变为保护成员了

    当类的继承方式为protected时候,基类的公有成员和保护成员都以保护成员身份出现在派生类中,而基类的私有成员在派生类中不可访问。

    继承关系中构造函数访问顺序

    先调用父类中的构造函数,再调用子类中的构造函数。释放对象时候,先调用当前类的析构函数,再调用父类的析构函数。

    //方法重载。在同一个类中,函数名相同而参数个数和参数类型不同

    //方法覆盖。在继承的两个类里面子类可以覆盖/重写父类里面的同名方法

  • 相关阅读:
    c# winform 调用js
    删除Management Data Warehouse (MDW) job失败
    AjaxUpload跨域上传问题
    Ajax.BeginForm()实现ajax无刷新提交
    MSDTC故障排除
    验证淘宝店铺真实性的几个方案
    微信公众号接收消息和发送消息开发流程和注意事项
    MVC中return File(byte[],"image/jpeg")输入图片不清晰
    JavaScript Patterns 2.9 Coding Conventions
    JavaScript Patterns 2.8 Number Conversions with parseInt()
  • 原文地址:https://www.cnblogs.com/hai5111/p/8278870.html
Copyright © 2011-2022 走看看