zoukankan      html  css  js  c++  java
  • 笔试题目收集(4)

    1.求下列程序结果

     

    #include"iostream" 
    using namespace std; 
     
    class A{ 
    public:
       void funA();
    };
    class B{ 
    public:
       void funB();
    };
     
    class C:public A,public B{
     
    };
    int main() 
    { 
        cout<<sizeof(C)<<endl;
        system("pause");
        return 0; 
    }
    


    输出结果:1。 在没有虚函数的时候,类的继承关系不分配虚表,也就没有指向虚表的指针,至于为什么是1。 本来求 sizeof 应该是 0 。但当我们声明该类型的实例的时候,它必须在内存中占有一定的空间,否则无法使用这些实例。可以参考 http://blog.csdn.net/u010064842/article/details/9222005 第七题。


    2.求下列程序输出结果

     

    #include"iostream"  
    using namespace std;  
    
    class A{  
    public:
         A(int num=0){this->num = num;}
         virtual void fun1(){
    	     cout<<"a="<<num<<endl;;
    	     cout<<"A::fun1"<<endl;
         }
         virtual void fun2(){
    	     cout<<"A::fun2"<<endl;
         }
    private:
         int num;
    };
    class B{  
    public:
         void funB(){};
    
    };
    
    class C:public A,public B{
    };
    
    int main()  
    {  
         typedef void(*FUN)(); 
         A a(5);
         C c,c1;
         cout<<sizeof(A)<<endl;                                 //1
         cout<<"a虚表的位置"<<(int *)*(int *)&a<<endl;           //2
         cout<<"a中的num的值"<<*(int *)(((int *)&a)+1)<<endl;    //3
         cout<<endl;
         cout<<sizeof(C)<<endl;                                 //4
         cout<<"c虚表的位置"<<(int *)*(int *)&c<<endl;           //5
         cout<<"c1虚表的位置"<<(int *)*(int *)&c1<<endl;         //6
         FUN f = (FUN)*(int *)*(int *)&a;              
         f();                                                   //7
         system("pause");
         return 0;  
    }  

    运行结果:

    下面对结果分析:

    //1:输出8,因为类中有虚函数,所以每个对象包含一个虚指针(4字节),再加上int类型(4字节)。

    //2:(int *)*(int *)&a,(int *)&a取出a对象的地址并转换为int*指针,*(int *)&a取出第一个元素的值也就是虚指针的                值,(int *)*(int *)&a,(int *)&a 转换为(int *)打印。具体结构如下:


    //3:分析跟2是一样的,详细如上面的图解。

    //4:一个虚指针+num的存储空间。

    //5:对象c的虚指针,同时也看到对象a和对象c的虚指针不是一个地方,即父类和子类的虚指针不一样。

    //6:对象c1的虚指针,发现c和c1的指针是一样的,同类子对象虚指针是一样的。

    //7:  调用虚函数,但是参数没传入,打印的是随机值。

    注:(int *)&a,指针转换为相应的类型


    3.下列程序程序输出结果

     

    #include"iostream"  
    using namespace std;  
    
    class A{  
    public:
         virtual void fun1(){}
    };
    class B{  
    public:
         virtual void fun2(){};
    
    };
    
    class C:public A,public B{
         char ch;
         int num;
    };
    
    class D:public A{
    public:long long data;
    };
    
    int main()  
    {  
         cout<<sizeof(A)<<endl;      //1
         cout<<sizeof(C)<<endl;      //2
         cout<<sizeof(D)<<endl;      //3
         D d;
         d.data = 25;
         cout<<*(long long *)((int *)&d+2)<<endl; //4
         system("pause");
         return 0;  
    } 


    输出结果:


    //1:A中含有一个虚指针,所以大小为4

    //2:C继承自B、C,因为B和C都有虚函数,所以此时C中有两个虚指针,分别指向两个虚表。同时C还有char和int类型两个成员,这里同样需要考虑对界问题。且这个这个对界,从0开始对的。具体如下:


    //3:D中只包含一个虚指针,但是含有long long类型元素(8个字节),这是也要考虑对界问题,具体如下:


    //4:((int *)&d+2)将地址加到下面红色的地方,然后转换成long long*指针类型,再取出指针所指内容。验证了下面结构的正确性。


    4.选择题

     

     

    #include <stdio.h>
    int main(){
        int s;
        scanf(“%d”,&s);
        while(s >0)
        {
             Switch(s)
             {
                 case 1:printf(“%d”,s+5);
                 case 2:printf(“%d”,s+4);break;           
                 case 3:printf(“%d”,s+3);
                 default: printf(“%d”,s+2);break;
              }
             scanf(“%d”,&s);
        }
    }


    这段代码输入1 2 3 4 5 0回车,输出结果是(A)

    A、6566567

    B、65665672

    C、66667

    D、666672


    5、linux的cron后台常驻程序(daemon)用于(D)

    A、负责文件在网络找的共享

    B、管理打印子系统

    C、跟踪管理系统信息和错误

    D、管理系统日常任务的调度


    说明:在Linux中,我们经常用到 cron 服务器来完成这项工作。cron服务器可以根据配置文件约定的时间来执行特定的作务。比如我们可以在配置文件中约定每天早上4点,对httpd 服务器重新启动,这就是一个计划任务;在Linux系统中,计划任务一般是由cron承担,我们可以把cron设置为开机时自动启动。cron启动后,它会读取它的所有配置文件(全局性配置文件/etc/crontab,以及每个用户的计划任务配置文件),然后cron会根据命令和执行时间来按时来调用度工作任务。


    待续。。。。。。。


  • 相关阅读:
    js对象的直接赋值、浅拷贝与深拷贝
    如何使ElementUi中的el-dropdown传入多参数
    机器学习之垃圾邮件分类2
    机器学习之手写数字识别-小数据集
    机器学习之深度学习-卷积
    机器学习之朴素贝叶斯-垃圾邮件分类
    机器学习之分类与监督学习,朴素贝叶斯分类算法
    机器学习之主成分分析(PCA&特征选择)
    机器学习之逻辑回归实践
    机器学习之特征选择
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3177901.html
Copyright © 2011-2022 走看看