笔试题目收集(3)

本文收集了一系列C++笔试题目,涉及多态、构造函数、析构函数、虚函数表等多个主题。通过分析和解答,帮助读者深入理解C++语言的特性,包括程序结构、内存管理以及对象生命周期等。
摘要由CSDN通过智能技术生成

笔试题目搜集系列推荐:

(1)笔试题目搜集1

(2)笔试题目收集2

(3)笔试题目搜集3

(4)笔试题目搜集4

(5)笔试题目搜集5





1.下列程序输出结果

typedef union {long i; int k[5]; char c;} DATE;  
struct data {   
    char cat;   
    DATE cow;   
    char dog;  
};  
cout<<sizeof(data)<<endl;

date按照4来对界,所以data结构体中按照最大的类型4来对界。最后结果28


2.运行下图中的C++代码,打印出的结果是什么? 

bool Fun1(char* str)  
{  
    printf("%s\n", str);  
    return false;  
}  
   
bool Fun2(char* str)  
{  
    printf("%s\n", str);  
    return true;  
}  
   
int _tmain(int argc, _TCHAR* argv[])  
{  
    bool res1, res2;  
    res1 = (Fun1("a") && Fun2("b")) || (Fun1("c") || Fun2("d"));  
    res2 = (Fun1("a") && Fun2("b")) && (Fun1("c") || Fun2("d"));  
   
    return res1 || res2;  
}

答案:打印出4行,分别是a、c、d、a。


3.编译运行下图中的C++代码,结果是什么?(A)编译错误;(B)编译成功,运行时程序崩溃;(C)编译运行正常,输出10。请选择正确答案并分析原因。(题目出自海涛:http://zhedahht.blog.163.com/blog/static/2541117420111169592105/

#include <iostream>  
   
class A  
{  
private:  
        int value;  
public:  
        A(int n)  
        {  
                value = n;  
        }  
        A(A other)  
        {  
                value = other.value;  
        }  
        void Print()  
        {  
                std::cout << value << std::endl;  
        }  
};  
   
int _tmain(int argc, _TCHAR* argv[])  
{  
        A a = 10;  
        A b = a;  
        b.Print();   
        return 0;  
}  
答案 :编译错误。在复制构造函数中传入的参数是 A 的一 个实例。由于是传值,把形参拷贝到实参会调用复制构造函数。因此如果允许复制构造函数传值,那么会形成永无休止的递归并造成栈溢出。因此 C++ 的标准不允许复制构造函数传值参数,而必须是传引用或者常量引用。在 Visual Studio GCC 中,都将编译出 错。

4.运行下图中代码,输出的结果是什么?这段代码有什么问题

#include <iostream>  
   
class A  
{  
public:  
        A()  
        {  
                std::cout << "A is created." << std::endl;  
        }  
   
        ~A()  
        {  
                std::cout << "A is deleted." << std::endl;  
        }  
};  
   
class B : public A  
{  
public:  
        B()  
        {  
                std::cout << "B is created." << std::endl;  
        }  
   
        ~B()  
        {  
                std::cout << "B is deleted." << std::en
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值