练习15.8 静态类型:对象在声明时采用的类型,是在编译期确定的 动态类型:目前所指对象的类型,是在运行时确定的 练习15.9 第一种情况:当对象的静态类型和对象的动态类型之间存在隐式的转换的情况下,静态类型可能与动态类型不同 第二种:当基类指针或者基类引用指向派生类对象的时候 练习15.10 if ...
分类:
编程语言 时间:
2017-09-14 20:04:56
阅读次数:
238
参考http://blog.csdn.net/calmreason/article/details/50903729 所有产品继承同一基本类 由工厂保存基类指针 产生各类产品 代码 // 002.cpp: 定义控制台应用程序的入口点。 // #include "stdafx.h" #include ...
分类:
其他好文 时间:
2017-08-31 11:00:45
阅读次数:
247
虚继承主要用于菱形 形式的继承形式 虚继承是为了在多继承的时候避免引发歧义, 比如类A有个就是a,B继承了A,C也继承了A,当D多继承B,C时,就会有歧义产生了,所以要使用虚拟继承避免重复拷贝。 虚函数继承是解决多态性的,当用基类指针指向派生类对象的时候,基类指针调用虚函数的时候会自动调用派生类的虚 ...
分类:
其他好文 时间:
2017-08-29 12:45:29
阅读次数:
127
我们知道当我们sizeof 一个类的时候,类的成员函数是不计算在对象的大小的里的,这是为什么呢?因为类的成员函数不是属于某一个对象的,而是类的所有对象所共享的,就像static变量那样。如果虚函数和普通成员函数一样,那么我们就不能通过指向子类的基类指针来引用子类的方法了,因为我们将不知道调用哪个方法 ...
分类:
编程语言 时间:
2017-08-27 01:05:47
阅读次数:
267
作用:作为基类使用的类应该具有虚析构函数,以保证在删除基类指针(动态分配的对象)时。依据指针实际指向的对象进行适当的析构。 请看以下这段代码; #include <iostream> class A{ public: A(){ std::cout << "A constructor execute" ...
分类:
其他好文 时间:
2017-08-18 09:38:12
阅读次数:
222
c++中动态多态性是通过虚函数来实现的。静态多态性是通过函数的重载来实现的,在程序运行前的一种早绑定,动态多态性则是程序运行过程中的一种后绑定。根据下面的例子进行说明。 运行结果为: 这里并没有得到我们需要的面积,基类指针是s1,s2是用来指向基类(Shape)对象的,这里我们用基类指针指向了派生类 ...
分类:
编程语言 时间:
2017-08-12 17:41:03
阅读次数:
318
人生苟且了很长时间,需要再继续努力了。 总结了C++的继承方面的关系: 朋友在面试的时候被问过一个问题,说类的继承重要的一点是什么,他没有答到点子上,后来面试官提到的是代码的复用,不用每次都重新写相同的代码,还是有道理的。 类的声明: class TableTennisPlayer{private: ...
分类:
编程语言 时间:
2017-07-03 22:36:25
阅读次数:
199
static_cast用法语法:static_cast<type-name>(expression)仅当type-name可以隐式转换为expression所属的类型,或者expression可以隐式转换为type-name所属的类型,转换才是合法的。否则,编译器会报错。可以将有继承关系的派生类对象的地址赋给基类指针。即使基类中没有..
分类:
其他好文 时间:
2017-06-19 09:55:32
阅读次数:
128
用基类的指针去转存派生类时除了上一篇boost::serialization 用基类指针转存派生类(错误多多,一波三折)之外。还有还有一种更简单的方法: 用BOOST_CLASS_EXPORT宏。以下我们来分析如何用BOOST_CLASS_EXPORT来实现 用基类的指针去转存派生类。 首先来看前面 ...
分类:
其他好文 时间:
2017-06-17 20:37:01
阅读次数:
135
C++多态方式: (1)静态多态(重载,模板) 是在编译的时候,就确定调用函数的类型。 (2)动态多态(覆盖,虚函数实现) 在运行的时候,才确定调用的是哪个函数,动态绑定。运行基类指针指向派生类的对象,并调用派生类的函数。 虚函数实现原理:虚函数表和虚函数指针。 纯虚函数: virtual int ...
分类:
编程语言 时间:
2017-06-01 10:26:20
阅读次数:
318