奇酷教育-Python培训|UI培训|WEB大前端培训|Unity3D培训|HTML5培训|人工智能培训|JAVA开发的教育品牌

您現在所在的位置:首頁 >學員就業 > 就業寶典 > 經典C++面試題,看看你會多少?(一)

經典C++面試題,看看你會多少?(一)

來源:奇酷教育 發表于:

題目(一):我們可以用static修飾一個類的成員函數,也可以用const修飾類的成員函數(寫在函數的最后表示不能修改成員變量,不是指寫在前

題目(一):我們可以用static修飾一個類的成員函數,也可以用const修飾類的成員函數(寫在函數的最后表示不能修改成員變量,不是指寫在前面表示返回值為常量)。請問:能不能同時用staticconst修飾類的成員函數?

分析:答案是不可以。C++編譯器在實現const的成員函數的時候為了確保該函數不能修改類的實例的狀態,會在函數中添加一個隱式的參數const this*。但當一個成員為static的時候,該函數是沒有this指針的。也就是說此時static的用法和static是沖突的。

我們也可以這樣理解:兩者的語意是矛盾的。static的作用是表示該函數只作用在類型的靜態變量上,與類的實例沒有關系;而const的作用是確保函數不能修改類的實例的狀態,與類型的靜態變量沒有關系。因此不能同時用它們。

題目(二):運行下面的代碼,輸出是什么?

class A

{

};

 

class B

{

public:

        B() {}

        ~B() {}

};

 

class C

{

public:

        C() {}

        virtual ~C() {}

};

 

int _tmain(int argc, _TCHAR* argv[])

{

        printf("%d, %d, %d\n"sizeof(A), sizeof(B), sizeof(C));

        return 0;

}

分析:答案是1, 1, 4class A是一個空類型,它的實例不包含任何信息,本來求sizeof應該是0。但當我們聲明該類型的實例的時候,它必須在內存中占有一定的空間,否則無法使用這些實例。至于占用多少內存,由編譯器決定。Visual Studio 2008中每個空類型的實例占用一個byte的空間。

class Bclass A的基礎上添加了構造函數和析構函數。由于構造函數和析構函數的調用與類型的實例無關(調用它們只需要知道函數地址即可),在它的實例中不需要增加任何信息。所以sizeof(B)sizeof(A)一樣,在Visual Studio 2008中都是1

class Cclass B的基礎上把析構函數標注為虛擬函數。C++的編譯器一旦發現一個類型中有虛擬函數,就會為該類型生成虛函數表,并在該類型的每一個實例中添加一個指向虛函數表的指針。在32位的機器上,一個指針占4個字節的空間,因此sizeof(C)4

題目(三):運行下面中的代碼,得到的結果是什么

class A

{

private:

        int m_value;

 

public:

        A(int value)

        {

                m_value = value;

        }

        void Print1()

        {

                printf("hello world");

        }

        void Print2()

        {

                printf("%d", m_value);

        }

};

 

int _tmain(int argc, _TCHAR* argv[])

{

        A* pA = NULL;

        pA->Print1();

        pA->Print2();

 

        return 0;

}

分析:答案是Print1調用正常,打印出hello world,但運行至Print2時,程序崩潰。調用Print1時,并不需要pA的地址,因為Print1的函數地址是固定的。編譯器會給Print1傳入一個this指針,該指針為NULL,但在Print1中該this指針并沒有用到。只要程序運行時沒有訪問不該訪問的內存就不會出錯,因此運行正常。在運行print2時,需要this指針才能得到m_value的值。由于此時this指針為NULL,因此程序崩潰了。

題目(四):運行下面中的代碼,得到的結果是什么

class A

{

private:

        int m_value;

 

public:

        A(int value)

        {

                m_value = value;

        }

        void Print1()

        {

                printf("hello world");

        }

        virtual void Print2()

        {

                printf("hello world");

        }

};

 

int _tmain(int argc, _TCHAR* argv[])

{

        A* pA = NULL;

        pA->Print1();

        pA->Print2();

 

        return 0;

}

分析:答案是Print1調用正常,打印出hello world,但運行至Print2時,程序崩潰。Print1的調用情況和上面的題目一樣,不在贅述。由于Print2是虛函數。C++調用虛函數的時候,要根據實例(即this指針指向的實例)中虛函數表指針得到虛函數表,再從虛函數表中找到函數的地址。由于這一步需要訪問實例的地址(即this指針),而此時this指針為空指針,因此導致內存訪問出錯。

題目(五):靜態成員函數能不能同時也是虛函數

分析:答案是不能。調用靜態成員函數不要實例。但調用虛函數需要從一個實例中指向虛函數表的指針以得到函數的地址,因此調用虛函數需要一個實例。兩者相互矛盾。

主站蜘蛛池模板: Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | pbt头梳丝_牙刷丝_尼龙毛刷丝_PP塑料纤维合成毛丝定制厂_广州明旺 | ★济南领跃标识制作公司★济南标识制作,标牌制作,山东标识制作,济南标牌厂 | 热熔胶网膜|pes热熔网膜价格|eva热熔胶膜|热熔胶膜|tpu热熔胶膜厂家-苏州惠洋胶粘制品有限公司 | 北京公司注册_代理记账_代办商标注册工商执照-企力宝 | 企小优-企业数字化转型服务商_网络推广_网络推广公司 | 学校用栓剂模,玻璃瓶轧盖钳,小型安瓿熔封机,实验室安瓿熔封机-长沙中亚制药设备有限公司 | BOE画框屏-触摸一体机-触控查询一体机-触摸屏一体机价格-厂家直销-触发电子 | 儋州在线-儋州招聘找工作、找房子、找对象,儋州综合生活信息门户! | 万博士范文网-您身边的范文参考网站Vanbs.com | PE拉伸缠绕膜,拉伸缠绕膜厂家,纳米缠绕膜-山东凯祥包装 | 美能达分光测色仪_爱色丽分光测色仪-苏州方特电子科技有限公司 | 校车_校车价格_19座幼儿园校车_幼儿园校车_大鼻子校车 | 滤芯,过滤器,滤油机,贺德克滤芯,精密滤芯_新乡市宇清流体净化技术有限公司 | 高压管道冲洗清洗机_液压剪叉式升降机平台厂家-林君机电 | 万师讲师网-优质讲师培训师供应商,讲师认证,找讲师来万师 | 便携式谷丙转氨酶检测仪|华图生物科技百科 | 广州番禺搬家公司_天河黄埔搬家公司_企业工厂搬迁_日式搬家_广州搬家公司_厚道搬迁搬家公司 | 电动葫芦|环链电动葫芦-北京凌鹰名优起重葫芦 | 冷热冲击试验箱_温度冲击试验箱价格_冷热冲击箱排名_林频厂家 | 广东西屋电气有限公司-广东西屋电气有限公司 | 2025福建平潭岛旅游攻略|蓝眼泪,景点,住宿攻略-趣平潭网 | 全国国际化学校_国际高中招生_一站式升学择校服务-国际学校网 | 珠海冷却塔降噪维修_冷却塔改造报价_凉水塔风机维修厂家- 广东康明节能空调有限公司 | 电动手术床,医用护理床,led手术无影灯-曲阜明辉医疗设备有限公司 | 成都思迪机电技术研究所-四川成都思迪编码器 | 旗帜网络笔记-免费领取《旗帜网络笔记》电子书 | 垃圾清运公司_环卫保洁公司_市政道路保洁公司-华富环境 | 档案密集架_电动密集架_移动密集架_辽宁档案密集架-盛隆柜业厂家现货批发销售价格公道 | 电子巡更系统-巡检管理系统-智能巡检【金万码】 | 干式变压器厂_干式变压器厂家_scb11/scb13/scb10/scb14/scb18干式变压器生产厂家-山东科锐变压器有限公司 | 泰国试管婴儿_泰国第三代试管婴儿费用|成功率|医院—新生代海外医疗 | 行星齿轮减速机,减速机厂家,山东减速机-淄博兴江机械制造 | 真空冷冻干燥机_国产冻干机_冷冻干燥机_北京四环冻干 | 柔软云母板-硬质-水位计云母片组件-首页-武汉长丰云母绝缘材料有限公司 | 水质传感器_水质监测站_雨量监测站_水文监测站-山东水境传感科技有限公司 | ZHZ8耐压测试仪-上海胜绪电气有限公司 | 全自动实验室洗瓶机,移液管|培养皿|进样瓶清洗机,清洗剂-广州摩特伟希尔机械设备有限责任公司 | 高防护蠕动泵-多通道灌装系统-高防护蠕动泵-www.bjhuiyufluid.com慧宇伟业(北京)流体设备有限公司 | T恤衫定做,企业文化衫制作订做,广告T恤POLO衫定制厂家[源头工厂]-【汉诚T恤定制网】 | 飞扬动力官网-广告公司管理软件,广告公司管理系统,喷绘写真条幅制作管理软件,广告公司ERP系统 |