77问答网
所有问题
当前搜索:
不能成为虚函数的条件
C++ 中什么样的函数
可以作为虚函数
答:
1.内联函数:我们都知道内联函数只是在函数调用点将其展开
,它不能产生函数符号,所以不能往虚表中存放,自然就不能成为虚函数。2.
静态函数
:定义为静态函数的函数,这个函数只和类有关系,它不完全依赖于对象调用,所以也不能成为虚函数。3.构造函数:都知道只有当调用了构造函数,这个对象才能产生,...
什么
函数不能
声明
为虚函数
?
答:
inline, static, constructor ,template 函数都
不能 为虚函数
,而析构
函数可以
。为什么呢:inline: 编译器替换; 而虚函数是为了解决运行期间绑定。static:class 成员; 编译期间就给class了。constructor: 构造函数表示要生成一个class的object;假设是virtual的,那就说不知道这个实例化derived还是based...
哪些函数
不能为虚函数
答:
普通函数
(非成员函数)只能overload,不能被override,声明为虚函数也没有什么意思,因此编译器会在编译时绑定函数。2、为什么C++不支持构造函数为虚函数?这个原因很简单,主要是从语义上考虑,所以不支持。因为构造函数本来是为了明确初始化对象成员才产生的,然而virtual function主要是为了在不完全了解细节...
C++中基类和派生类同名
函数
调用的疑惑
答:
这是一个多态的例子,c++中约定使用基类的指针或引用时
会
产生动态绑定,前提是有
虚函数
成员,这2个
条件
多已经满足,所以产生了多态的行为.而后a.f()是虚函数输出
为
3,a.g()不是虚函数,只能调用自己的成员输出值为2。要想输出4...Ok
可以
在基类A中把a.g()也定义成虚函数。
C++之静态成员函数为什么
不能为虚函数
答:
静态成员函数只有一个拷贝,所有对象都可以用,并不在对象实例中重复出现
;虚函数的父本在基类中定义,不同版本则在派生类中重新定义,静态成员函数传不到派生类中去(不需要传就能使用),就谈不上重新定义的问题。供参考……
C++运行时多态的选择题,帮帮新手吧
答:
在构造函数或析构函数中调用虚函数,将采用静态联编 B,C,D:构造函数
不能
声明
为虚函数
,但析构
函数可以
声明为虚函数.当基类的析构函数声明为虚函数时,无论派生类是否使用virtual关键字说明,派生类的析构函数一定是虚函数,而且,如果满足动态联编的其他
条件
,对虚析构
函数的
调用将采用动态联编 ...
虚类
虚函数
答:
函数体部分则
可以
包含具体的实现,但并非必须。
虚函数的
核心功能在于实现动态联编,这意味着在程序运行时,
会
根据对象的实际类型而不是指针或引用类型来决定调用哪个函数。这为多态性提供了基础,允许在继承层次结构中重写基类的行为。特别地,纯虚函数是一种没有函数体的虚函数,它只是声明了一个接口,...
C++ dynamic_cast关于if判断 有疑惑
答:
if(B *b3=dynamic_cast<B*>(a1))你主要要知道这个if中是用什么
作为条件
判断的,即里面的执行流程 这个if中作为条件判断的是b3 首先是执行B *b3=dynamic_cast<B*>(a1), 然后再用结果b3作为条件判断,如果转换失败,b3=NULL,也就相当于if(NULL) 或者if(0),所以
条件会为
假,执行else下面的...
C++中的virtual关键字是什么?怎么用?
答:
c++中的函数调用默认不适用动态绑定。要触发动态绑定,必须满足两个条件:第一,指定为虚函数;第二,通过基类类型的引用或指针调用。由此可见,virtual主要功能是实现动态绑定。2、virtual关键字的使用情况:virtual可用来定义类函数和应用到虚继承。友元函数 构造函数
static静态函数
不能用virtual关键字修饰...
dynamic_cast注意事项
答:
当我们涉及到类型转换时,dynamic_cast和static_cast的使用有着不同的规则。首先,一个关键的区别在于,dynamic_cast要求目标类必须有
虚函数
,这是其存在的必要
条件
。如果没有虚函数,编译器
会
报错,因为动态类型检查需要依赖于类的虚函数表,这是存储在类中的运行时类型信息,仅当类定义了虚函数时才...
1
2
3
4
5
6
7
涓嬩竴椤
其他人还搜
什么不能定义虚函数
不能说明为虚函数的是
哪些函数不能被声明为虚函数
哪些函数不能是虚函数
函数在被调用之前必须先声明吗
x||y
友元函数
虚函数与纯虚函数
析构函数不是虚函数