下面这篇文章讲的很好。 http://www.cnblogs.com/lihaosky/articles/1606502.html 假设我们有这样的一个类: class Base { public: virtual void f() { cout << "Base::f" <<> virtual v ...
分类:
编程语言 时间:
2019-10-06 20:17:20
阅读次数:
73
1.实现方式 typeid运算符,返回表达式的类型 dynamic_cast运算符,基类的指针或引用安全地转换成派生类的指针或引用 2.适用于:使用基类的指针或引用执行派生类的操作,且该操作不是虚函数。 3.使用风险:程序员必须清楚地知道转换的目标类型,且必须检查类型转换是否被成功执行。尽可能用虚函 ...
分类:
编程语言 时间:
2019-10-06 16:36:33
阅读次数:
101
将可能会被继承的父类的析构函数设置为虚函数,可以保证当我们new一个子类,然后使用基类指针指向该子类对象,释放基类指针时可以释放掉子类的空间,防止内存泄漏。 C++默认的***析构函数不是虚函数是因为虚函数需要额外的虚函数表和虚表指针,占用额外的内存***。而对于不会被继承的类来说,其析构函数如果是 ...
分类:
编程语言 时间:
2019-10-05 20:35:11
阅读次数:
128
一、常用数据结构: 1. list http://www.cplusplus.com/reference/list/list/ https://www.geeksforgeeks.org/list-cpp-stl/ 表示双向链表;单向链表用forward_list; 可以在常数时间复杂度内进行插入和 ...
分类:
编程语言 时间:
2019-10-02 16:34:46
阅读次数:
76
虚函数本质就是一个函数指针 友元函数不能声明为虚函数,但是虚函数可以作为另一个类的友元。 构造函数不可以是虚函数,若声明为虚函数:不会再次构造,没有办法创建子类中父类对象 虚析构函数,让父类指针正确的释放子类对象的内存:先调用子类的析构,再调用父类的析构 纯虚函数 含有纯虚函数的类为抽象类,抽象类是 ...
分类:
其他好文 时间:
2019-10-02 12:21:01
阅读次数:
89
刚开始学习C++,每天懵懵懂懂看一点,有点乱 现在开始一点点整理 C++虚函数的作用:给派生类重写用的,普通的函数只能重载,通过修改函数形参的个数或者类型,派生类B继承基类A,A类中有个fun函数,B类根据自身需求更改了fun函数 在main中如下定义: 上述代码结果正常 但是C++有许多特性,其中 ...
分类:
其他好文 时间:
2019-09-30 20:03:21
阅读次数:
99
[TOC] 1. 什么是抽象类 在进行面向对象分析时,会发现一些抽象的概念,比如图形Shape,要想计算图形的面积,就必须先知道具体的图形类型,因为对概念上的“图形”求面积是没有意义的。 在面向对象理论中,现实世界中的抽象概念可以用抽象类表示 抽象类是一种只能定义类型、不能产生对象的类 抽象类的直接 ...
分类:
其他好文 时间:
2019-09-28 14:25:42
阅读次数:
81
纯虚函数:一个函数只有函数名和形参列表,没有具体实现;语法:virtual double GetArea()=0; 抽象类:在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象。抽象类是不完整的,它只能用作基类。 话不多说,自己理解吧,笔者第一此看到是瞎说的,希望你有所收获吧。 1.含有纯虚函数 ...
分类:
编程语言 时间:
2019-09-27 11:04:31
阅读次数:
93
1、final用于让虚函数不可被重写 如上代码是不可被编译过的 2、override 1.在函数比较多的情况下可以提示读者某个函数重写了基类虚函数(表示这个虚函数是从基类继承,不是派生类自己定义的); 2.强制编译器检查某个函数是否重写基类虚函数,如果没有则报错。 ...
分类:
编程语言 时间:
2019-09-27 01:21:24
阅读次数:
86
简单介绍虚函数virtual 在某基类中声明 virtual 并在一个或多个派生类中被重新定义的成员函数称为虚函数。 虚函数的作用就是实现多态性(Polymorphism),多态性是将接口与实现进行分离。 C#作为完全面向对象语言,所有函数并不默认为virtual,但可以在基类中声明关键字virtu ...