-
构造函数前不能加virtual 其他要养成都加virtual的习惯 当然 还有一些不可以加的地方。。。不能修饰 构造函数 2.不能修饰 普通函数 3.不能修饰 静态成员函数 4.不能和 inline共同使用查看全部
-
如果delete后面跟的是一个父类的指针,那么只能执行父类的析构函数,如果delete后面跟的是子类的指针,那么父类和子类的析构函数都会被调用。查看全部
-
多态是使用父类指针指向子类指针,通过该指针调用子类的方法。查看全部
-
每个类的头文件中都加上宏定义,防止出现类重定义现象 子类继承父类的时候,也要把父类本身的头文件加上 virtual关键字给父类中的与子类函数名相同的函数加就行,这样就可以实现多态。最好的做法就是给子类中的也加上virtual关键字,这是好的编程习惯 Shape *shape1 = new Reac(3,6); Shape *shape2 = new Circle(5);查看全部
-
多态:相同对象收到不同的消息或不同对象收到相同消息时产生产生不同的动作.查看全部
-
hhhhh查看全部
-
C++中异常处理通常使用try...catch...语法结构, 一个try语句可以对应一个或多个catch语句,但不能没有catch语句。 C++中使用throw抛出异常,通过catch捕获异常。查看全部
-
异常:程序运行期出现的错误。 异常处理:对有可能发生异常的地方做出预见性的安排。 异常处理关键字try...catch...和throw就是将主逻辑放在try块里,异常处理逻辑放在catch里面。 基本思想:主逻辑与异常处理分离。好处看上去整齐,非常容易理解。 异常传播方向和调用关系相反。 try 和catch可以是一对一也可以是一对多。 常见的异常:数组下标越界,除数为0,内存不足。 多态和异常处理的联系:我们可以通过定义一个异常类,把异常类定义为一个接口类其中定义一些打印的方法,或者异常处理的方法,然后我们通过细分的子类来继承接口类当我们抛出这些子类的对象时都可以用父类来捕获。throw new加子类名捕获时用catch(父类名+&e)我们也可以通过子类对象去调用子类相应的虚函数。查看全部
-
-_-查看全部
-
虚函数的实现:当我们实例化一个shape的对象时,在这个对象当中除了有声明的数据成员,还会有另外一个数据成员{虚函数表函数指针(也是一个指针,占有四个基本内存单元)顾名思义,它指向一个虚函数表}这个虚函数表会与shape类的定义同时出现,计算机中虚函数表也是占有一定的空间的。这个虚函数表指针的值就是虚函数表存储的起始位置。父类的虚函数表只有一个,通过父类实例化的所有对象虚函数表指针的值都相同,都是该类虚函数表的起始位置。虚函数表当中肯定定义了一个函数指针,这个函数指针就是相应虚函数的入口地址查看全部
-
在C++中用到关键字virtual的一共有两个部分 1.在基类中声明虚函数一定要用关键字 virtual 2.而如果虚函数的实现单独来做,则不能用virtual关键字,否则会报错。 3.而在自类中对虚函数进行重写的时候,需要先在自类中声明这个虚函数,可以加 virtual关键字,也可以不加,但是为了看代码的方便,最好加上virtual。 4.而如果对改写的虚函数进行单独的实现,也是不能加virtual关键字的。查看全部
-
RTTI的含义是运行时类型识别。 RTTI技术可以通过父类指针识别其所指向的对象的真实数据类型。 运行时必须建立在虚函数的基础上,否者无需RTTI技术。查看全部
-
dynamic_cast注意事项:一)只能应用于指针和引用的转换。 二)要转换的类型中必须包含虚函数,如果没有虚函数转换就会失败。 三)如果转换成功就返回子类的地址,失败就返回NULL。查看全部
-
typeid(*b):的用法:能够看任何一个对象或者指针的类型,包括基本的数据成员的类型。他能够打印的指针是指针本身的类型查看全部
-
接口类中仅有纯虚函数,不能含有其他函数,也不能含有数据成员。 可以使用接口类指针指向其子类对象,并调用子类对象中实现的接口类中的纯虚函数。 一个类可以继承一个接口类,也可以继承多个接口类。 一个类继承接口类的同时也可以继承非接口类。查看全部
举报
0/150
提交
取消