C++面试100问(九)

C++中typdef和#define区别?

#define是预处理命令,在预处理是执行简单的替换,不做正确性的检查;typedef是在编译时处理的,它是在自己的作用域内给已经存在的类型一个别名。

C++中有哪些调试程序的方法?

windows下直接使用vs的debug功能,linux下直接使用gdb,我们可以在其过程中给程序添加断点,监视等辅助手段,监控其行为是否与我们设计相符。

C++中什么情况下会调用拷贝构造函数?

1)用类的一个对象去初始化另一个对象的时候 2)当函数的参数是类的对象时,就是值传递的时候,如果是引用传递则不会调用 3)当函数的返回值是类的对象或者引用的时候。

C++中为什么引用可以实现动态绑定?

因为引用(或指针)既可以指向基类对象也可以指向派生类对象,这一事实是动态绑定的关键。用引用(或指针)调用的虚函数在运行时确定,被调用的函数是引用(或指针)所指的对象的实际类型所定义的。

C++中子类析构时,要调用父类的析构函数吗?

析构函数调用的次序时先派生类后基类的。和构造函数的执行顺序相反。并且析构函数要是virtual的,否则如果用父类的指针指向子类对象的时候,析构函数静态绑定,不会调用子类的析构。不用显式调用,会自动调用。

C++中为什么析构函数一般写成虚函数?

首先析构函数可以为虚函数,当析构一个指向派生类的基类指针时,最好将基类的析构函数声明为虚函数,否则可以存在内存泄露的问题。如果析构函数不被声明成虚函数,则编译器实施静态绑定,在删除指向派生类的基类指针时,只会调用基类的析构函数而不调用派生类析构函数,这样就会造成派生类对象析构不完全。

C++中构造函数为什么一般不定义为虚函数?

1)因为创建一个对象时需要确定对象的类型,而虚函数是在运行时确定其类型的。而在构造一个对象时,由于对象还未创建成功,编译器无法知道对象的实际类型,是类本身还是类的派生类等等2)虚函数的调用需要虚函数表指针,而该指针存放在对象的内存空间中;若构造函数声明为虚函数,那么由于对象还未创建,还没有内存空间,更没有虚函数表地址用来调用虚函数即构造函数了。

相关推荐
影视飓风TIM12 分钟前
C++ STL 完整入门笔记[9]:C++ 仿函数、priority_queue与STL算法底层笔记
数据结构·c++·笔记
小白学大数据22 分钟前
基于Python的抖音网页版视频点赞数增长趋势追踪系统设计与实现
开发语言·爬虫·python·搜索引擎·音视频
木由里予23 分钟前
TEE(Trusted Execution Environment)技术详解
java·linux·开发语言·网络·嵌入式硬件·android-studio
JckOLF04Z33 分钟前
C#客户端的异步操作
开发语言·c#
依然鸣33 分钟前
蓝桥杯多校模拟赛(第二场)题解
数据结构·c++·经验分享·学习·算法·图论
曹牧42 分钟前
C#:注释嵌套
开发语言·c#
依然鸣1 小时前
蓝桥杯多校模拟赛 题解
数据结构·c++·经验分享·学习·算法·蓝桥杯
中国搜索直付通1 小时前
游戏车机端支付通道,会是下一个被低估的合规战场吗?
java·大数据·开发语言·人工智能·游戏
LccKyI1 小时前
C# 零基础学习 Day01|基础概念梳理 + 思维导图总结
开发语言·笔记·学习·c#
AKA__Zas1 小时前
芝士算法(位运算)
java·开发语言·算法·leetcode·学习方法