找回密码
 注册
关于网站域名变更的通知
查看: 102|回复: 0
打印 上一主题 下一主题

面向对象的15个重要技术知识

[复制链接]

该用户从未签到

跳转到指定楼层
1#
 楼主| 发表于 2024-1-24 15:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
  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有接口

$ M$ g3 ^* n5 H9 n7 V" T( ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-9-24 21:35 , Processed in 0.109375 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表