C++中类和结构体的区别:
1、 C++中的类默认的成员是私有的,struct 默认是共有的
2、 C++中的类可以定义成员函数,struct 只能定义成员变量
指针和数组的区别:
1、 数组对应一块内存,指针指向一块内存
2、 数组的地址和空间大小在生命周期不会发生变化(内容可能发生变化);指针指向的内
存大小可以随时变化,指针指向常量字符串时,它的内容不可以改变
3、 用 sizeof 可以计算数组的元素个数,无法计算指针所指向内存的大小
4、 数组名是常量指针,指针是变量指针
指针函数和函数指针
1、 指针函数:int *f(int a, int b) 表示函数的返回值是一个指针类型
2、 函数指针:int (*f)(int a, int b)表示一个指针,这个指针指向函数
理解 list 和 vector 的区别
1、 vector 拥有一段连续的内存空间,支持随机存取,插入和删除效率低
2、 list 拥有一段不连续的内存空间,不支持随机存取,支持插入和删除
派生类和基类中有同名的函数,基类指针指向子类对象时,调用的函数是谁的?
1、 当基类指针指向子类对象时,通过这个指针调用子类和基类同名成员函数时,基类声明
为虚函数就会调用子类的这个函数,不声明则会调用基类
虚函数和纯虚函数的区别:
纯虚函数后面必须要跟 0
虚函数必须实现,纯虚函数一定没有实现(抽象类)
虚函数在子类里面可以不重载,但是纯虚函数必须重载
纯虚函数必须在子类进行实现
纯虚函数的目的在于使派生类仅仅只是继承函数的接口
1、 父类指针指向子类对象时,如果父类析构函数加 virtual,执行 delete 时,会先调用子类
的析构函数再调用父类的析构函数。如果不加,则只会调用父类的析构函数
如果 Base 是个父类,类中有函数声明为纯虚函数,则 Base b 报错,Base *b 不错报,主要
为包函纯虚函数的类为抽象类,不能实例化
析构函数设置为虚函数的作用:
主要用于父类指针指向子类对象时,用于释放子类资源
如果不设置为虚函数,delete 时则只会调用父类的析构函数。
https://blog.csdn.net/u011416077/article/details/52260663