c++知识点

来源:互联网 发布:井柏然毁了肖奈 知乎 编辑:程序博客网 时间:2024/06/03 18:16
C:    面向过程    流程图
C++:    面向对象    类图    封装    继承    多态
struct 可以为空 sizeof(struct) = 1 // 占位符;
struct 与 class 的区别:默认成员访问权限不同(struct 默认为public,class默认为private);
类的大小为其普通数据成员的大小之和;
多个虚函数只有一个虚指针;
将不同类型数据以及与这些数据相关的操作封装在一起的集合即类,类不占据内存空间;
类的声明,类的实现,main()各一个文件;
函数重载:
    1    函数名相同(同一个类)
    2    函数参数列表不同
    3    和函数返回值类型无关
    4    常成员函数可以构成重载(函数后面带const);
inline与否由编译器判断函数是否符合要求决定;
非静态成员函数默认有this指针,在用本类对象调用成员函数时,将本对象的地址隐含地传递给了this指针;
构造函数名与类名相同,构造函数无返回值类型,在类对象定义时自动被调用。若类中无构造函数,系统提供默认构造函数,否则默认构造函数不存在,构造函数可以重载;
explicit关键字用于限定类不能进行类型转换;
类的初始化:传参——开辟数据成员内存空间——按数据成员的声明顺序执行成员初始化列表(对象优先);
引用和指针的区别?
    引用相当于另一个变量的别名    引用被初始化后无法再被修改,相当于常指针    引用本身的地址被引用的值的地址覆盖,无法获取;
析构函数:~类名,无参,不能重载,没有返回类型,一个类有且仅有一个析构函数;
类的成员函数可以访问当前对象的私有成员,也可访问类的他对象的私有成员;
copy构造函数参数类型为何为&?若参数类型为类类型,实参传给形参又会调用copy构造函数,形成递归调用;
copy构造函数调用的情况:
    1    函数传参
    2    返回值
    3    用已有对象初始化同类新对象;
new,delete与malloc,free的区别?
    1    new,delete是C++运算符,而malloc,free是库函数
    2    new,delete可以自动调用构造函数,析构函数,而malloc,free只能为类开辟内存空间,无法调用构造函数初始化对象;
浅copy无法实现资源copy;
若类中有指针作为数据成员,then  自定义copy函数和析构函数counts;
依赖关系    关联    包含关系{聚合,组合}    继承关系;
OOA——OOD——OOP ; //system    analysis    design    programming



 

0 0