zoukankan      html  css  js  c++  java
  • C++学习笔录3

    1、隐藏:存在于派生类和基类中。只要成员名字相同就叫做隐藏。参数和函数名都相同时,是一种特殊的隐藏,叫做重写,重写只出现在函数中。若需要访问基类中被隐藏的成员,必须访问这种方法:“对象名:类名::隐藏成员名”。而“对象.成员名”访问的是派生类中的成员。之所以叫隐藏,是因为它的访问方式。
    2、overload重载;override重写
    3、虚函数:在声明函数时(定义函数时不用加)前面加上关键字virtual就为虚函数。
    4、指针访问虚函数的特点:(1)、使用对象的指针去访问普通函数时,只看指针所属类,访问到的函数是指针所属类中的函数;(2)、使用指针对象的指针去访问虚函数时,只看指针指向对象的所属类,访问到的函数是指针指向的对象所属类的虚函数。(对象指针:访问普通函数时,只看指针类型;访问虚函数时,只看指针指向的类型)。引用和指针是一样的。这点主要用于实现回调函数。
    5、回调函数:后写的代码执行会触发先写的代码调用后写的代码。后写的代码分两类:(1)、触发代码。(2)、回调函数。(典型的回调函数是创建线程)
    6、能够体现多态:(1)、this指针 (2)、函数重载 (3)、指针访问虚函数虚函数等等。
    7、动态关联、动态编联、动态多态性。都体现在指针访问虚函数这里。
    8、虚析构函数:有虚函数就要用虚析构函数。当采用new方式创建基类对象,用基类类型变量去保存,当delete该变量时,会发现只调用了基类的析构函数,而并没有调用基类的析构函数,此时就出现了内存泄漏。这种情况,必须把基类的析构函数声明为虚析构函数。当基类的析构函数为虚析构函数时,派生类中的函数自动变为虚析构函数,不管是否用virtual关键字修饰。(建议:凡是可能称为基类的类的析构函数都声明为虚析构函数)
    9、C++基础中重要知识:类对象、继承、虚函数、抽象类、组合。
    10、纯虚函数:virtual 函数类型 函数名(参数表列) = 0;    这里的“=0”是格式,不是赋值,告诉编译系统这是一个纯虚函数。纯虚函数没有函数体。纯虚函数一旦定义了,就会变成虚函数。语法上没有错。
    11、抽象类:    包含一个或者多个纯虚函数的类就是抽象类。(1)、抽象类不能用抽象类创建对象,但是可以被继承。(2)、抽象类可以创建指针或者引用来指向派生类对象。(3)、纯虚函数被派生类实现以后即为虚函数。(4)、抽象类的纯虚函数可以被继承,派生类中可以实现抽象类的纯虚函数。如果派生类没有把抽象类的纯虚函数实现完,则该派生类也为抽象类。(5)、在派生类中定义基类中继承下来的纯虚数前,在类中鼻血先声明为虚函数。
    12、问:什么时候使用组合?什么时候使用继承?什么时候使用重写?什么时候使用虚函数?什么时候使用抽象类?
        答:(1)、部分与整体的关系,但是非本质上的,它仅仅是作为功能的扩充。
    (2)、类型上的包含关系使用继承。为了解决代码的重用。
    (3)、重写是对继承下来的函数体不满意。即函数体不能符合业务,则必须重写。一个基类可能有很多派生类,部分派生类对某个函数体不满意。实际开发中一定是重写虚函数,重写普通函数没有意义。
    (4)、如果该函数要被基类重写,则需将该函数声明为虚函数;
    (5)、所有派生类对基类的函数都不满意,但是又要使用相同的功能(即函数名和参数都相同),则需将该函数定义为纯虚函数,这样的此时的类就为抽象类。
    13、protected修饰的构造函数,在派生类中,只能在参数列表中调用,不能在函数体内调用。而private修饰的构造函数,则在能被派生类中调用。
    14、名称空间的使用可以使程序中定义相同名字的函数、变量、类等。
  • 相关阅读:
    数据库新秀 postgresql vs mongo 性能PK
    mongodb索引--1亿条记录的查询从55.7秒到毫秒级别<补充版>
    nodejs npm install -g 全局安装和非全局安装的区别
    nodejs express template (模版)的使用 (ejs + express)
    CSS3动画:YouTube的红色激光进度条
    IE bug之location.href没有referer
    工程师
    Shadow DOM的事件绑定
    IE回车的一个怪异行为
    CSS3全新的背景图片方案
  • 原文地址:https://www.cnblogs.com/zxtp/p/4912438.html
Copyright © 2011-2022 走看看