程序员面试笔试宝典——读书笔记5、字符串、编译、面向对象相关

本文是《程序员面试笔试宝典》的读书笔记,重点讨论了字符串操作、编译过程以及面向对象编程的相关知识点。内容包括自定义strcpy、数字转字符串、编译与链接的区别、C++中的extern "C"用法,以及面向对象的封装、继承、多态概念,并深入探讨了类的构造、深拷贝与浅拷贝、友元、继承方式等核心概念。
摘要由CSDN通过智能技术生成

十一、字符串

1、不使用C/C++字符串库函数,如何自行编写strcpy()函数

char *strcpy(char *strDest, const char *strSrc)
{
	assert((strDest != NULL) && (strSrc != NULL));
	if(strDest == strSrc)	return strDest;
	char *address = strDest;
	while( (*strDest++ = *strSrc++ ) != '\0')
		;
	return address;
}


2、如何把数字转换成字符串


3、如何自定义内存复制函数memcpy()


十二、编译

1、编译和链接的区别是什么

一般由源代码变成可执行的程序需要经过三个过程:编译、链接、载入

编译:将预处理生成的文件,经过词法分析、语法分析、语义分析、以及优化后编译成若干个目标模块。可以理解为将高级语言翻译为计算机可以理解的二进制代码,即机器语言。


链接:由链接程序将编译后形成的一组目标模块以及它们所需要的库函数链接在一起,形成一个完整的载入模型。链接主要解决的模块间的相互引用问题,分为地址可空间分配,符号解析和重定位几个步骤。在编译阶段生成目标文件时,会暂时搁置那些外部引用,而这些外部引用就是在链接时进行确定的,链接器在链接时,会根据符号名称区相应模块中寻找对应符号。带符号确定后,链接器会重写之前那些未确定符号的地址,这个过程就是重定位。链接一般分为静态链接、载入时动态链接以及运行时动态链接3种。


载入:由载入程序将载入模块载入内存。


2、编译型语言与解释型语言的区别是什么


3、如何判断移动程序是由C 编译程序还是由C++编译程序编译的


4、在C++ 程序中调用被C编译器编译后的函数,为什么要加 extern “C”


5、两段代码共存于一个文件,编译时有选择的编译其中一部分,如何实现


十三、面向对象相关

1、面向对象与面向过程有什么区别


2、面向对象的基本特征有哪些

a、封装:值将客观事物抽象成类,每个类对自身的数据和方法实行保护。

b、继承:可以使用现有类的所有功能,而不需要重新编写原来的类,它的目的是为了进行代码复用和支持多态。一般有三种形式:实现继承、可视继承、接口继承

c、多态:指同一个实体同时具有多种形式,它主要体现在类的继承体系中,它是将父对象设置成为和一个或更多它的子对象相等的技术,赋值以后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是允许子类类型的指针赋值给父类类型的指针。


3、什么是深拷贝?什么是浅拷贝


4、什么是友元


5、复制构造函数与赋值运算符的区别是什么


6、基类的构造函数/析构函数是否能被派生类继承


7、初始化列表和构造函数初始化的区别是什么


8、类的成员变量的初始化顺序是按照声明顺序吗


9、当一个类为另一个类的成员变量时,如何对其进行初始化


10、C++ 能设计实现一个不能不继承的类吗


11、构造函数没有返回值,那么如何得知对象是否构造成功


12、C++ 中的空类默认产生哪些成员函数


13、如何设置类的构造函数的可见性


14、public 继承、protected 继承、private 继承的区别是什么


15、C++ 提供默认参数的函数吗


16、C++ 中有哪些情况只能用初始化列表而不能用赋值


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值