您的位置 首页 技术

关于面向对象的15个技术知识

关于面向对象的15个技术知识-采用 vitural定义成员函数,定义了基类指针,但指针指向派生类对象,如果是虚函数,则指针调用是派生类的函数

  1.引证和指针差异

  引证是别号,指针是实体,引证只能界说时被初始化一次,不可变

  2.效果域::

  1)大局效果域 2)类效果域 3)命名空间效果域

  3.结构函数,析构函数次序

  1)结构函数:先父类,再子类

  2)析构函数:先子类,再父类

  4.重载结构函数

  1)假如没有界说,体系会有默许结构函数,无参数

  2)默许结构函数有两种,无参数和有默许参数两种状况

  3)假如重载了带参数的结构函数,又没界说默许结构函数,则目标初始化时有必要带参数

  5.结构函数初始化列表与结构函数中的赋值的差异

  原因:编译器总是保证一切成员目标在结构函数体履行之前初始化,下面三种有必要选用初始化列表办法

  1)需求初始化的数据成员是目标的状况(这儿包含了承继状况下,经过显现调用父类的结构函数对父类数据成员进行初始化);

  2)需求初始化const润饰的类成员或初始化引证成员数据;

  3)子类初始化父类的私有成员;

  class Mytest :public Test {

  public:

  Mytest():Test(110)

  {

  //Test(110); // 结构函数只能在初始化列表中被显现调用,不能在结构函数内部被显现调用

  };

  }

  6.虚函数

  1)结构函数不能为虚函数,析构函数一般界说为虚函数,不然承继类的调用或许存在内存走漏

  7.承继

  1)一般都选用public办法承继:public办法,父类成员在子类中坚持原有拜访等级,但父类界说的private,子类是拜访不了

  2)运用final制止承继(C++11)

  8.static成员函数

  1)相当于类里边的大局函数,先于目标存在,所以staTIc润饰的变量要在类外初始化。

  9.多态

  选用 vitural界说成员函数,界说了基类指针,但指针指向派生类目标,假如是虚函数,则指针调用是派生类的函数

  9.类里边的界说指针

  尽量不要在类里边界说指针,不然存在浅仿制问题,需求改写仿制结构函数才行

  10.运算符重载

  运算符重载和一般函数界说差不多,仅有差异一个是函数名,一个是operator符号(例如operator=)

  11. 嵌套类(内部类)

  例如 vector《int》::iterator iter; vector《int》::iterator是类名,表明 vector《int》界说的内部类iterator

  内部类就像这个类的一个成员函数,所以内部类有权拜访外部类内容(包含private内容)。可是内部类就相当于在一个效果域内界说了

  一个类,这个效果域内的其他变量是无权拜访这个类的。

  class Out{

  public :

  void Fun ()

  {

  nested object; // 这个函数不能经过

  object.b_ = 1;

  }

  private:

  class nested{

  void Fun2()

  {

  Out object;

  object._a = 1; // 这个函数能够编译过经过

  }

  int b_;

  }

  int a_;

  }

  12 关于iostream和iostream.h的差异

  《iostream.h》承继C言语的规范库文件,未引进姓名空间界说,所以可直接运用;用#include 《iostream》时,要用using namespace std

  13 模板成员函数不能放在独自的完成文件中,最简略的办法是将所以模板信息放在一个头文件

  14. 虚函数,派生的类,该函数始终是虚函数,不用加关键字virtual,但函数名,参数,返回值要都相同,为了安全加overide

  15. std::cout cout是指令空间std下的一个大局目标, 《《这个是这个cout目标的操作符重载

  C++和JAVA比照

  1.C++有头文件,JAVA没有

  2.C++ 指令空间using; java import

  3.JAVA没有指针,类是引证类型变量,主动废物收回;C++有引证和指针

  4.Java中的一般函数默许为虚函数,因而动态绑定的行为是默许的,而C++有必要将办法声明为虚函数(virtual关键字),履行时才会进行动态绑定

  5.JAVA关键字public,private,protecte为包拜访权限,而C++是类相关的拜访权限,

  6.承继上,C++在承继中也带有拜访权限,支撑多承继,而JAVA没有只要extends,单一承继

  7.java不支撑操作符重载,不支撑效果域,不支撑函数有默许值

  8.C++没有接口,JAVA有接口

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/87527.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部