MyC++基础知识补漏

来源:互联网 发布:淘宝指数数据分析 编辑:程序博客网 时间:2024/05/22 14:54

一、继承部分:

  1、继承只能静态的拷贝基类。(基类new产生的空间无法被派生类继承)。

  2、public继承所得基类的变量和函数性质不变;

        protected继承所得.....会将原基类public......变为protected性质;

        private继承所得......会将原基类所有性质......变为private性质。

  3、虚基类作用:防止重复继承。(避免代码重复)。

        如:人<--研究生<--在职研究生,人<--在职人员<--在职研究生,此时会发生人这个基类被重复拷贝2次(代码重复)。此时仅需将人基类设为虚基类。

  4、派生类构造函数生成顺序:先生成基类构造函数,再生成成员函数,最后生成自身;

                    析构函数销毁顺序:与构造函数相反。  

  5、派生类含参构造函数定义时需要先定义基类含参构造函数(且保证二者参数可兼容)。

        tip:若所含参数为缺省值(给定所含参数默认值即初值),则相当于无参;

                仅初始化父基类,不初始化爷基类(例外:当爷基类为虚基类时,也需要初始化)。

  6、初始化列表(可提高性能):

      (1)所有static成员变量在类外初始化(不管它是const,是引用,还是没默认构造函数的对象);

      (2) 普通成员变量,是const,是引用,是没默认构造函数的,必须在初始化列表初始化;

      (3) 普通成员变量,需要复杂运算的初始化变量,应该在构造函数内初始化,否则尽量在初始化列表中初始化。

        tip:成员是按照其在类中出现的顺序初始化的,而不是按照其在初始化列表中出现的位置初始化。

       具体初始化列表如该链接:点击打开链接

  7、继承所得基类的变量和函数与自己的......不在同一块区域。

        tip:派生类和基类包含同名的成员变量时,调用基类函数显示同名成员变量时,使用基类的成员函点击打开链接数。

        具体验证如该链接:点击打开链接

  8、多继承会带来二义性,采用作用域来解决。(因JAVA中无作用域概念,故无多继承)

        具体(略有出入,思想想通)实现如该链接:点击打开链接

***其他:

  1、private、protected不能在类外部调用,只能在类的内部调用(如在类的public函数中调用)。

  2、重载和覆盖的区别:重写=覆盖(基类和派生类中,参数相同),重载(在同一类中,参数不同)

  3、友元是C++相比纯面向对象(如C++)的一个“缺陷”。(使得private限制等成为摆设,安全性降低,如此设计纯粹是为了提高效率)

        具体叙述如该链接:点击打开链接

  4、头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用。

        具体叙述如该链接:点击打开链接

  5、this指针保存当前对象地址。

        具体验证如该链接:点击打开链接

  6、断言:assert(expression1),如果expression1为true则执行后面的语句。如果为false则,报错并终止执行后面的程序。(用来判断程序中数据是否有“非法”的错误)

        具体阐释如该链接:点击打开链接

原创粉丝点击