一、测试代码 class BaseCallClass{ func NormalCall(){} @objc func OcCall(){} @objc dynamic func OcDynamicCall(){} } class DerivedCallClass:BaseCallClass{ ove ...
分类:
编程语言 时间:
2019-03-20 17:20:51
阅读次数:
216
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚 ...
分类:
其他好文 时间:
2019-03-17 17:01:37
阅读次数:
133
1、override保留字表示当前函数重写了基类的虚函数。目的:1.在函数比较多的情况下可以提示读者某个函数重写了基类虚函数(表示这个虚函数是从基类继承,不是派生类自己定义的);2.强制编译器检查某个函数是否重写基类虚函数,如果没有则报错。用法:在类的成员函数参数列表后面添加该关键字既可,被over ...
分类:
编程语言 时间:
2019-03-15 19:13:36
阅读次数:
225
引言: 在c++中司空见惯的事情就是:可以通过指针和引用可以实现多态,而对象不可以。 那为什么?让我们来解开这神秘的暗纱! 1、 类对象的存储方式: 在一个类的实例中,只会存放非静态的成员变量。 如果该类中存在虚函数的话,再多加一个指向虚函数列表指针—vptr。 例如声明如下两个类,并分别实例化两个 ...
分类:
编程语言 时间:
2019-03-13 19:53:57
阅读次数:
233
一、基类指针、派生类指针 父类指针可以new一个子类对象 二、虚函数 有没有一个解决方法,使我们只定义一个对象指针,就可以调用父类,以及各个子类的同名函数? 有解决方案,这个对象指针必须是一个父类类型,我们如果想通过一个父类指针调用父类、子类中的同名函数的话,这个函数是有要求的; 在父类中,eat函 ...
分类:
编程语言 时间:
2019-03-06 22:01:22
阅读次数:
164
多态:同样的消息作用于不同类型的对象产生不同的行为。1,静态多态 实现:运算符重载。(from 学堂在线) 重载为类的成员函数: 重载为非成员函数: 有些运算符不能重载为类的成员函数(二元运算符的左操作数不是对象,某些类不是自己设计的)。 2,动态多态 实现:虚函数 ...
分类:
编程语言 时间:
2019-03-04 20:55:47
阅读次数:
206
一、概念 一个类有多个直接基类的继承关系称为多继承,多继承会引入其他问题: 1.祖先类obj中有一个变量a,然后有P1和P2两个类分别都继承obj类,再有C1类多继承P1和P2时,定义的对象使用变量a时,编译不知道引用P1的还是P2的变量a,会编译报错(变量a的二义性),可以使用虚继承解决此问题, ...
分类:
其他好文 时间:
2019-02-23 11:03:53
阅读次数:
201
以下所有问题的回答是本人总结的回答要点,并没有全部详细写出。 1.java语言有哪些优点? 面向对象 跨平台(一次编译,到处运行) 提供很多内置类库 去除了C++中难以理解的特性(指针,虚函数) 2.java与C/C++的异同 java是解释型语言,C++是编译型语言 java是纯面向对象,C++是 ...
分类:
编程语言 时间:
2019-02-22 23:40:19
阅读次数:
271
1:每个析构函数只会清理自己的成员(成员函数前没有virtual)。2:可能是基类的指针指向派生类的对象,当析构一个指向派生类的成员的基类指针,这时程序不知道这么办,可能会造成内存的泄露,因此此时基类的析构函数要定义为虚函数;基类指针可以指向派生类的对象(多态),如果删除该指针delete[]p,就 ...
分类:
编程语言 时间:
2019-02-19 13:36:04
阅读次数:
147
类的成员声明与定义 声明一个类,则类就是一个类型,类不能直接访问其属性,这是与Python最大区别 类的访问修饰符 继承类型 派生类可以访问基类中所有的非私有成员。因此基类成员如果不想被派生类的成员函数访问,则应在基类中声明为 private。 我们可以根据访问权限总结出不同的访问类型,如下所示: ...
分类:
编程语言 时间:
2019-02-18 23:19:02
阅读次数:
245