实习 - 纪念第一次被腾讯虐
来源:互联网 发布:mac如何下载阿里旺旺 编辑:程序博客网 时间:2024/06/05 07:21
实习专题的第一篇,就是参加腾讯模拟笔试。说是笔试,其实也是要用电脑在线考试的。然而,久疏C++的我,果不其然被虐。而且是被两道C++题目虐。选择题有一道,考到了析构函数和虚函数,而且还加上了指针的知识……还有一道是大数乘法,然而我花了半个小时依然没有打完。痛定思痛,还是先总结一下犯错的知识点:
一、虚函数
在类继承的时候,函数是可以重载的,如果用一般的方法,调用基类的函数还是子类的构造函数取决于对象的类型,而用virtual function的话,则取决于指针的类型。
看了这句话,应该可以知道下面的程序输出的结果是什么了:
// Virtual.cpp#include <iostream>using namespace std;// 测试虚函数的用法struct A{ virtual void foo() { cout << "A_foo" << endl; } void boo(){ cout << "A_boo" << endl; }};struct B : A{ virtual void foo() { cout << "B_foo" << endl; } void boo(){ cout << "B_boo" << endl; }};int main() { A a; B b; A *pa = &a; pa->foo(); pa->boo(); pa = &b; pa->foo(); pa->boo(); return 0;}
虚函数解决了什么问题呢?如果基类有很多继承类,而且不使用虚函数,那么通过子类对象想访问基类的函数是不行的(就像两个pa->boo()都输出A_boo一样,对象是A*没有变,所以输出也不变),必须另外声明基类对象才可以,很麻烦。而使用虚函数则可以让基类指针指向子类,这样这个指针就可以访问基类的虚函数。如果你像调用子类的函数,那么再定义一个子类的指针就可以了。
最后说明一个细节:子类不需要再在函数前面加上virtual了,但是加上的话比较整体,规范一些。
参考网址:什么是C++虚函数、虚函数的作用和使用方法
二、大数乘法
0 0
- 实习 - 纪念第一次被腾讯虐
- 纪念第一次
- 第一次实习
- JAVA用双栈实现队列,纪念我挂掉的第一次腾讯面试题
- 纪念第一次登陆
- 第一次,留个纪念!
- ShellExecute,第一次使用纪念
- 纪念我的第一次
- 纪念第一次喝醉酒
- 纪念USACO的第一次
- 第一次收入,纪念一下
- 第一次SRM,纪念
- 纪念第一次写博客
- 纪念,IOS第一次找工作!
- 纪念第一次开通博客
- 第一次爬虫,纪念下
- 纪念第一次写博客
- 纪念第一次写博客
- caffe源码理解之layer
- C语言合法标识符
- [Android]MAC JVM安装路径
- display:none与visible:hidden的区别
- Oracle11g release2数据导出到Oracle10g release2方法
- 实习 - 纪念第一次被腾讯虐
- SVM(2)-算法
- (第1讲)java 的基本类型及其范围
- C++复习:一个小例子复习基础
- Oracle-03-初次连接数据库
- Enumernation pk iterator
- 最快最简单的排序——桶排序
- Ubuntu 屏幕分辨率设置
- ERROR 1366 (HY000): Incorrect string value: '\xE5\xB8\x82' for column 'address' at row 1