77问答网
所有问题
当前搜索:
虚函数可以写成内联函数
一个
函数能否
即是
虚函数
又是
内联函数
?
答:
当然不能
,虚函数 意味在运行期确定函数的调用地址,内联函数 如同宏的用法一样,相当于在编译期把调用内联的地方加上了函数实现的代码。前者是动态的,后者是静态的。另外,即使 编译器 通过了编译,那么函数也不可能是内联的
一个
函数能否
即是
虚函数
又是
内联函数
?
答:
一个函数不可以既是虚函数又是内联函数
。严格的说法是:就算能建立内联虚函数,或者说虚函数被声明为内联函数,编译器遇到这种情况根本不会把这样的函数内联展开,而是当做普通函数来处理。编译器拒绝展开一个非虚内联函数,C++编译器常常首先会报错:“内联中断-函数太大”。如果内联函数调用自身,或者...
为什么
虚函数
不应该是
内联
(inline)函数
答:
其实很简单,内联函数就是为了在代码中直接展开,减少函数调用话费的代价,
虚函数是为了在继承后对象能够准确的执行自己的动作
,这是不可能统一的。再说,inline函数在编译时被展开,虚函数在运行时才能动态的绑定函数。5、为什么C++不支持友元函数为虚函数?
虚函数
的作用
答:
2、虚函数不能被声明为内联函数:内联函数是指在编译时被插入到目标代码中的函数
,而虚函数需要在运行时根据对象的实际类型来调用相应的函数,因此无法被声明为内联函数。3、虚函数的返回类型必须是派生类的类型或其指针类型:由于虚函数的作用是实现多态,因此在基类中声明虚函数的返回类型时,必须考虑...
C++ 中什么样的
函数可以
作为
虚函数
答:
1.内联函数:我们都知道内联函数只是在函数调用点将其展开,它不能产生函数符号,所以不能往虚表中存放,
自然就不能成为虚函数
。2.静态函数:定义为静态函数的函数,这个函数只和类有关系,它不完全依赖于对象调用,所以也不能成为虚函数。3.构造函数:都知道只有当调用了构造函数,这个对象才能产生,...
c++的内嵌
函数
是怎么回事?
答:
1。不是所有的函数都能内联,递规,
虚函数
,都不能。2。
内联函数
只适合于1-5行的小函数(并且是经常需要调用到的)。对于一个含有很多语句的大函数,函数调用和返回的开销相对来说是微不足道的。3。即使你声明一个inline函数,最终的代码中该函数不一定是内联的, 很多考试都会考到这点。 (换...
虚方法
和抽象方法的区别是什么?
答:
1.
虚函数
仅适用于有继承关系的类对象, 所以只有类的成员函数才能说明为虚函数.2.静态成员函数不能是虚函数.3.
内联函数
不能是虚函数.4构造函数不能是虚函数.5.析构
函数可以
是虚函数.简单点说,抽象方法是需要子类去实现的.
虚方法
,是已经实现了,子类可以去覆盖,也可以不覆盖取决于需求.如 public...
什么函数不
能
声明为
虚函数
?
答:
inline, static, constructor ,template 函数都不能 为
虚函数
,而析构
函数可以
。为什么呢:inline: 编译器替换; 而虚函数是为了解决运行期间绑定。static:class 成员; 编译期间就给class了。constructor: 构造函数表示要生成一个class的object;假设是virtual的,那就说不知道这个实例化derived还是based...
C++面试题汇总
答:
导致文件描述符结构中指针指向的内存背重复释放,进而导致一些不可预期的异常。 比如全局变量的初始化,就不是有main函数引起的。例如: 全局对象的构造函数,会在main函数之前执行。 多态,纯
虚函数
,抽象类
内联函数
虚函数的特点:如果希望派生类能够重新定义基类的方法,则在基类中将该方法定义为
虚方法
,这样可以启用...
虚函数
的开销究竟在哪里?
答:
虚函数
的开销主要在于它阻碍了编译器
内联函数
和各种函数级别的优化,导致性能开销较大。在普通函数中,log(10)会被优化掉,它就只会被计算一次,而如果使用虚函数,log(10)不会被编译器优化,它就会被计算多次。此外,虚函数实现的空间开销就是每个对象多了个指针(一般8字节),然后含有virtual函数的类...
1
2
3
4
5
涓嬩竴椤
其他人还搜
构造函数可以是内联函数吗
虚函数与纯虚函数
可以作为虚函数的是
构造函数虚函数
析构函数不是虚函数
析构函数虚函数
虚基类和虚函数
内联函数使用
内联函数实例