您的位置:首页 > 编程语言 > C语言/C++

c++知识点

2017-02-10 18:07 246 查看
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

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++