-
当定义了虚函数时,数据成员里自动添加了一个叫虚函数表指针的指针,该虚函数表里存放了函数指针,这些指针指向了各种已定义的函数查看全部
-
该题的C选项什么意思?查看全部
-
当在double calcArea()前加virtual时,解决了在main函数中执行p1->calcArea()时执行的是基类(即Shape)中的calcArea函数(其中Shape *p1=new Circle)的问题; 当在基类中的析构函数前加virtual时,解决了当(在父类中在堆中用new申请了内存时引起的内存泄漏(因为销毁操作只在基类中执行了,加了virtual后先在派生类中执行后在基类执行)的问题查看全部
-
父类的析构函数前有virtual时,子类中的析构函数前也自动带有virtual,但还是尽量要在子类的析构函数前把virtual写出来,方便程序员看出来;查看全部
-
常见异常:数组下标越界;除数为0;内存不足查看全部
-
try正常逻辑catch异常处理。throw抛出异常让catch捕获查看全部
-
接口类全是纯虚函数,没有实现代码,所以没有.cpp文件查看全部
-
接口类表达的是一种能力或协议查看全部
-
virtual 不能修饰普通函数查看全部
-
接口类没有数据成员,成员函数都是纯虚函数查看全部
-
含有纯虚函数的类叫抽象类;仅仅含有纯虚函数的类叫接口类。查看全部
-
111查看全部
-
抽象类的子类中如果不将抽象类里的纯虚函数具体实现,那么这个子类仍是一个抽象类,不能实例化。必须要将父类所有的纯虚函数都具体实现才能实例化。查看全部
-
delete []p用于释放对象数组。delete p只释放一个对象。查看全部
-
总结:1.多态分为静态多态和动态多态,静态多态是指编译后运行前就已经将不同的行为和同一个符号的关联编译好了,只等运行;动态多态是运行后才执行同一符号的不同行为,是依赖于类的继承和虚函数完成。2.隐藏和覆盖:隐藏是子类和父类有同名函数,那么一个子类对象调用同名函数时只能调用到自己所在的子类的函数,父类的那個函数就像是被隐藏了一样,若想调用,必须加父类名::的限定符;覆盖是针对(动态)多态而言,当子类父类的同名函数或者析构函数被virtual修饰时,子类和父类就会各自有一份虚函数表,表内有指针分别指向子类父类的虚函数,若用一个实例化的子类对象去定义或赋值给父类对象,那么通过父类对象去调用同名虚函数时,就会通过子类的虚函数表去调用到子类的虚函数,就像是子类的虚函数覆盖了父类的虚函数。查看全部
举报
0/150
提交
取消