c++复习基础要点02虚函数与模板与staticinline是否共存.docVIP

  • 5
  • 0
  • 约小于1千字
  • 约 2页
  • 2017-06-08 发布于重庆
  • 举报

c++复习基础要点02虚函数与模板与staticinline是否共存.doc

c复习基础要点02虚函数与模板与staticinline是否共存

虚函数能否定义为模板函数 当一个类有虚函数时,它一定有一个虚表,用来纪录每个虚函数的实际地址。这也就是说这个虚表的大小是在编译期就确定了的。有多少个虚函数,虚表就纪录几个。 类中的模板函数函数会根据具体的类型而实例化,这也就是说这个模板函数会实例多少个函数出来是不知道的,这样,虚表的大小就不好确定了。所以在现有的编译器的情况下,虚函数不能是模板函数。当然以后可能会支持这种情况。不能。成员函数不可同时为virtual和static。? 多态实现的基本原理是每个带有virtual函数的类的【实例】要包含一个指针,指向虚函数表 vtbl 。 static函数做为类函数,不与任何【实例】相关,自然无法实现多态了。纯虚函数是否可以被定义为private的?如果可以,具体用在什么情况下?class A public: void fun f ; private: void f 0; ; 内联函数能不能定义成虚函数啊?1.内联函数是个静态行为,而虚函数是个动态行为,他们之间是有矛盾的。? 2.我们之所以能看到一些象内联函数的虚函数,是因为某个函数是否是内联函数不是由我们说的算,而是由编译器决定的。我们只能向编译器建议,某个函数可以是内联函数 inline关键字 ,但是编译器有自己的判断法则。所以可能出现这样的情况: 2.1 ? 我们用inline声明的函数却没有inline 2.2 ? 我们没有用inline声明的函数却是inline 2.3 ? 对于inline函数,编译器仍然将它编译成一个有地址的函数 由于virtual函数不能是inline,所以inline标识不起作用,仍然是动态运行决定构造函数一般是用来初始化对象,只有在一个对象生成之后,才能发挥多态的作用,如果将构造函数声明为virtual函数,则表现为在对象还没有生成的情况下就使用了多态机制,因而

文档评论(0)

1亿VIP精品文档

相关文档