C++面试题总结(二)_当一个类a 中没有声命任何成员变量与成员函数,这时sizeof(a)的值是多少,如果不是

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

1、 静态存储区,是在程序编译时就已经分配好的,在整个运行期间都存在,如全局变量、常量。

2、 栈上分配,函数内的局部变量就是从这分配的,但分配的内存容易有限。

3、 堆上分配,也称动态分配,如我们用new,malloc分配内存,用delete,free来释放的内存。

  1. extern"C"有什么作用?

答:Extern "C"是由C++提供的一个连接交换指定符号,用于告诉C++这段代码是C函数。这是因为C++编译后库中函数名会变得很长,与C生成的不一致,造成C++不能直接调用C函数,加上extren "c"后,C++就能直接调用C函数了。

Extern "C"主要使用正规DLL函数的引用和导出 和 在C++包含C函数或C头文件时使用。使用时在前面加上extern “c” 关键字即可。可以用一句话概括extern "C"这个声明的真实目的:实现C++与C及其它语言的混合编程。

  1. 用什么函数开启新进程、线程。

答案:

线程:CreateThread/AfxBeginThread等

进程:CreateProcess等

  1. SendMessage和PostMessage有什么区别

答案:SendMessage是阻塞的,等消息被处理后,代码才能走到SendMessage的下一行。PostMessage是非阻塞的,不管消息是否已被处理,代码马上走到PostMessage的下一行。

  1. CMemoryState主要功能是什么

答案:查看内存使用情况,解决内存泄露问题。

  1. #include <filename.h> 和 #include “filename.h” 有什么区别?

答:对于#include <filename.h> ,编译器从标准库路径开始搜索 filename.h

对于#include “filename.h” ,编译器从用户的工作路径开始搜索 filename.h

  1. 处理器标识#error的目的是什么?

答:编译时输出一条错误信息,并中止继续编译。

  1. #if!defined(AFX_…_HADE_H)

#define(AFX_…_HADE_H)

……

#endif作用?

答:防止该头文件被重复引用。

  1. 在定义一个宏的时候要注意什么?

答:定义部分的每个形参和整个表达式都必须用括号括起来,以避免不可预料的错误发生

  1. 数组在做函数实参的时候会转变为什么类型?

答:数组在做实参时会变成指针类型。

  1. 系统会自动打开和关闭的3个标准的文件是?

答:

(1) 标准输入----键盘—stdin

(2) 标准输出----显示器—stdout

(3) 标准出错输出----显示器—stderr

  1. .在Win32下 char, int, float, double各占多少位?

答:

(1) Char 占用8位

(2) Int 占用32位

(3) Float 占用32位

(4) Double 占用64位

  1. strcpy()和memcpy()的区别?

答:strcpy()和memcpy()都可以用来拷贝字符串,strcpy()拷贝以’\0’结束,但memcpy()必须指定拷贝的长度。

  1. 说明define和const在语法和含义上有什么不同?

答:(1) #define是C语法中定义符号变量的方法,符号常量只是用来表达一个值,在编译阶段符号就被值替换了,它没有类型;

(2) Const是C++语法中定义常变量的方法,常变量具有变量特性,它具有类型,内存中存在以它命名的存储单元,可以用sizeof测出长度。

  1. 说出字符常量和字符串常量的区别,并使用运算符sizeof计算有什么不用?

答:字符常量是指单个字符,字符串常量以’\0’结束,使用运算符sizeof计算多占一字节的存储空间。

  1. 简述全局变量的优缺点?

答:全局变量也称为外部变量,它是在函数外部定义的变量,它属于一个源程序文件,它保存上一次被修改后的值,便于数据共享,但不方便管理,易引起意想不到的错误。

  1. 总结static的应用和作用?

答:

(1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;

(2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;

(3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;

(4)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;

(5)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。

  1. 总结const的应用和作用?

答:

(1)欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后就没有机会再去改变它了;

(2)对指针来说,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const;

(3)在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值;

(4)对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员变量;

(5)对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为"左值"。

  1. 什么是指针?谈谈你对指针的理解?

答:指针是一个变量,该变量专门存放内存地址;

指针变量的类型取决于其指向的数据类型,在所指数据类型前加*

指针变量的特点是它可以访问所指向的内存。

  1. 什么是常指针,什么是指向常变量的指针?

答:常指针的含义是该指针所指向的地址不能变,但该地址所指向的内容可以变化,使用常指针可以保证我们的指针不能指向其它的变量。

指向常变量的指针是指该指针的变量本身的地址可以变化,可以指向其它的变量,但是它所指的内容不可以被修改。指向长变量的指针定义。

  1. 函数指针和指针函数的区别?

答:函数指针是指向一个函数入口的指针;

指针函数是函数的返回值是一个指针类型。

  1. 简述Debug版本和Release版本的区别?

答:Debug版本是调试版本,Release版本是发布给用户的最终非调试的版本,

  1. 指针的几种典型应用情况?

答:

int *p[n];-----指针数组,每个元素均为指向整型数据的指针。

int (*)p[n];—p为指向一维数组的指针,这个一维数组有n个整型数据。

int *p();------函数带回指针,指针指向返回的值。

int (*)p();----p为指向函数的指针。

  1. static函数与普通函数有什么区别?

答:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝

  1. struct(结构) 和 union(联合)的区别?

答:1. 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。

  1. 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。
  1. class 和 struct 的区别?

答:struct 的成员默认是公有的,而类的成员默认是私有的。

  1. 简述枚举类型?

答:枚举方便一次定义一组常量,使用起来很方便;

  1. ASSERT()的作用?

答:ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。

  1. 局部变量和全局变量是否可以同名?

答:能。局部会屏蔽全局。要用全局变量,需要使用"::"(域运算符)。

  1. 程序的不同变量的不同存储位置

答:局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中。

  1. 在什么时候使用常引用?

答:如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。

  1. 类的声明和实现的分开的好处?

答:

  1. 起保护作用;

  2. 提高编译的效率。

  1. windows消息系统由哪几部分构成?

答:由一下3部分组成:

  1. 消息队列:操作系统负责为进程维护一个消息队列,程序运行时不断从该消息队列中获取消息、处理消息;

  2. 消息循环:应用程序通过消息循环不断获取消息、处理消息。

  3. 消息处理:消息循环负责将消息派发到相关的窗口上使用关联的窗口过程函数进行处理。

  1. 什么是消息映射?

答:消息映射就是让程序员指定MFC类(有消息处理能力的类)处理某个消息。然后由程序员完成对该处理函数的编写,以实现消息处理功能。

100.什么叫智能指针?

答:当一个类中,存在一个指向另一个类对象的指针时,对指针运算符进行重载,那么当前类对象可以通过指针像调用自身成员一样调用另一个类的成员。

  1. winsock建立连接的主要实现步骤?

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

个类对象的指针时,对指针运算符进行重载,那么当前类对象可以通过指针像调用自身成员一样调用另一个类的成员。

  1. winsock建立连接的主要实现步骤?

[外链图片转存中…(img-1kWZJ0CO-1715737443956)]
[外链图片转存中…(img-fyaTY6t1-1715737443957)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值