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

c++知识点总结

2016-12-17 00:00 183 查看
摘要: 感谢人大金仓,因为这是在人大金仓总结的

1. 基类指针可以只想子类,子类的不能指向父类。父类可以认为是内结构体,子类是外结构体,和c的原则一样,内部的能用宏替换为外部的,而外部的只有知道内部的名称才能找到,编译器不知道你将采用什么样的继承方式,只允许内部的只想外部,不能让外部的指向内部。
2. 基类的析够函数最好写成virtual的,因为当有一个基类指针只想子类时,delete这个指针时,只会执行基类的析构函数,可能引起内存泄漏,当基类析构写为virtual时,会执行子类的,子类会执行父类的,
3. 当基类中有虚函数时,父类指针指向父类时,调用这个函数,编译器会先检查子类是否有重写的虚构,若有则执行子类的,若没有则执行父类的。
4. 只要有一个(至少一个)没有函数体的virtual函数时,这样的基类认为是抽象类,不能实例化,子类必须实现其虚函数。
5. 当基类声明了一个virtual函数后,其继承类多态继承这个虚函数后,在生命中不管是否写关键字virutal,这个函数都是virtual的,建议写上,当然子类的子类这个函数都是virtual的,知道永远。
6. 基类B的public的函数,子类C隐藏了这个函数重新声明为virtual后,C的子类D让B指向后,不发生多态,让C指向后发生多态,因为是从C开始这个函数才是virtual的的。
7. 纯虚函数声明:virtual type_of_return mem_func(...) = 0; 最后加个 ‘ =0 ’ 只要有一个这样的函数,这个类就是抽象类,这样的类不能实例化除非被子类多态继承后实例化子类,在基类中也可以写纯虚函数的函数体或者不写,写了后,用基类::函数名来调用。
8. 有关c++中的:: :c和c++语法类似,经常弄混,其实有天大的不同,c中全局函数直接调用,在c++中也可以直接调用,但是最好的做法是加个::,注:前面没有类名,标准的::用法是 类名::函数名,表示要实现的这个函数是属于这个类的,不加类名的调用表示这个函数是全局函数,在一个类中调用自己的静态函数,和其他函数一样,不要加::,或者用类名::函数名,
9. c++中的关键字explicit:
这个关健字存在的意义在于防止隐士转化,比如当一个类的构造有一个参数的,也有默认的构造,即没有参数的,可是呢,一个参数的那个构造有一个默认参数,当调用没有参数的构造函数的时候,应该调用的哪一个构造呢,这使人困惑,加入explicit函数防止隐式转化,调用哪个一个参数并使用默认参数。
10.c++中构造函数出错处理。
首先构造函数是肯定不能有返回值的,如果在这个构造中调用了可能失败的函数,怎么办,考虑两种办法处理:
1.再写一个函数检查是否成功,在调用除delete。
2.用throw try catch机制,但是throw后不会或者不能执行类的析够函数,在catch处执行delte和在catch块后执行delete都不能解决内存泄漏问题,应该在throw之前调用类的析够函数,或者用类析够函数,或者释放该释放的内存。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++