• 一道Apple公司(中国)的面试题目


    Apple在中国(上海)有公司业务,但是感觉主要是做测试工作的部门,主要是保障Apple的产品质量QE。面试的时候,面试官出了一道题目,我貌似曾今开过类似的题目,但是由于当场发挥不佳没有答出来。题目大意是这样的: 

    在公司的某个通信协议中存在这样一个场景,甲给乙发送了一个数据帧,这个数据帧最前面的一个字节代表是数据帧的类型(总共四种),只可能为0,1,2,3。甲每次给乙发送一个数据包后,乙要通过自己写程序调用对应数据帧类型的函数来对这个数据帧进行处理。处理函数必须要和帧相对应,不然得不到真确的结果。要求不能使用if...else...,switch和三目表达式语句。

    题目到这里,想必大家都已经知道可以使用C++的虚函数来做,可是到底应该怎么写呢?下面给出一种实现方法。

    #include <iostream>
    using namespace std;
    typedef void (*pFunc)(void);
    class Solution{
        public:
            virtual void func1(){ cout << "func1 executed ..." << endl;}
            virtual void func2(){ cout << "func2 executed ..." << endl;}
            virtual void func3(){ cout << "func3 executed ..." << endl;}
            virtual void func4(){ cout << "func4 executed ..." << endl;}
            void doSomething(int frame_id) {
                if(frame_id >= 0 && frame_id <=3){
                    pFunc pf;
                    pf = (pFunc)*((int *)*(int *)this + frame_id);
                    pf();
                }
            }
    };
    
    int main(){
        Solution sln;
        sln.doSomething(0);
        sln.doSomething(1);
        sln.doSomething(2);
        sln.doSomething(3);
        return 0;
    }

    执行结果如下:

    其中关于如何获取指向虚函数的指针的方法,可以参见文章:http://www.cppblog.com/xczhang/archive/2008/01/20/41508.html

  • 相关阅读:
    为什么我会爱上黑客?什么才是真正的黑客
    谷歌超级机器人, 许多餐馆已经通过网络进行预订
    天呐!智能手机比任何人都更快地杀死地球
    PHP 操作结果集对象方法
    PHP 连接数据库基础操作
    PHP SESSION 操作
    PHP cookie基本操作
    PHP文件下载
    PHP文件上传案例和函数
    PHP目录操作函数汇总
  • 原文地址:https://www.cnblogs.com/fangying7/p/4961599.html
Copyright © 2020-2023  润新知