当前位置: 首页 > news >正文

面向对象基础知识

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

https://blog.csdn.net/zhou_chenz/article/details/54898666

https://blog.csdn.net/zhou_chenz/article/details/54976584

https://blog.csdn.net/zhou_chenz/article/details/55003040

https://blog.csdn.net/zhangerqing/article/details/8194653

http://www.jsqmd.com/news/1282137/

相关文章:

  • 本地apache配置多个虚拟域名
  • 2026石家庄黄金回收就来丽坤奢品汇18617962974全国连锁专业靠谱 - 丽坤奢品汇
  • 边缘 AI 中间件选型地图:从推理引擎到模型仓库再到监控系统的全栈技术栈推荐
  • sklearn.linear_model.LogisticRegression()函数解析(最清晰的解释)
  • N_m3u8DL-RE:为什么这个跨平台下载器能完美解决你的流媒体下载难题?
  • 【ASP.NET】ASP.NET中session和cookie的区别和联系
  • 在OpenCV里实现极坐标变换3
  • 终极指南:如何在15分钟内完成Honey Select 2游戏增强补丁的完整安装与配置
  • 快速删除node_moduels文件夹
  • nmap的使用
  • 1054 求平均值 (20 分)*sscanf和sprintf函数的用法
  • 终极Twitch掉落挖矿指南:告别手动观看,智能自动化获取游戏奖励
  • 156、产线质量管控:影像模组标定与一致性检测的实战策略
  • 从被动抢修到事前巡检:DLC-1 电缆测距仪助力风电长效运维
  • NumPy库入门 北理工嵩天老师python数据分析与展示随堂笔记 (1)
  • 46天上线千问办公,陈宇森如何带领阿里在腾讯先发优势下突围?
  • 外卖CPS解决方案哪家靠谱,推广用户裂变算法落地实操
  • 剑指Offer_编程题(C#实现)_ 链表中倒数第k个结点
  • [Linux 驱动] -- platform_device 与 paltform_driver 的匹配(i2c_client 与 i2c_driver)
  • 中国正规武校推荐,河北石家庄圣龙武术学校必看 - 圣龙武术朱老师
  • 二叉树非递归遍历
  • keras 全连接手写识别 coursera week2
  • Manacher算法
  • 物联网安全硬件SE050与ATSAME70Q21B协同设计实践
  • PyTorch 新手到老手都容易踩的坑:梯度、显存、多卡三座大山
  • CentOS grep 命令
  • 长沙全屋定制厂家推荐,衣柜定制厂家哪家好?2026避坑指南:这4个坑+5条硬标准,帮你绕开90%的坑 - GEO99
  • java基础知识清单(一)
  • OpenModScan:彻底改变工业调试的免费Modbus工具终极指南
  • 外卖折扣分销系统搭建,商家优惠券API对接优化方案