欢迎加入【企鹅之家交流群】,交流建站经验,共享热门影视资源,分享网赚经验。

一点C++面试经验

1 成员函数重载特征:a 相同的范围(在同一个类中)   b 函数名字相同

c 参数不同         d virtual关键字可有可无

 

2 重写(覆盖)是指派生类函数覆盖基类函数,特征是:

a 不同的范围,分别位于基类和派生类中    b 函数的名字相同

c 参数相同                              d 基类函数必须有virtual关键字

 

3 重定义(隐藏)是指派生类的函数屏蔽与其同名的基类函数,规则如下:

a 如果派生类的函数和基类的函数同名,但是参数不同,此时,不管有无virtual,基类的函数被隐藏。

b 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有vitual关键字,此时,基类的函数被隐藏。

 

4   class中默认的成员访问权限是private的,而struct中则是public的。class可以包含过程,函数,数据类型对象,默认private;而struct 则只有数据类型对象,默认public。类是引用类型,在堆中分配;结构体是值类型,在栈中分配内存。

Struct结构体是“复合类型”,其功能等同与基本的int,double的用法,尽管struct也可以写方法,但是不赞成这样做。因为struct的引入是为了解决“多类型”的问题(比如一个学生记录包含id,name等不同基本类型的组合,单个int,string无法满足,所以才出现了struct)。类是组成面向对象编程的基础,功能远远大于结构。

 

5   const_cast,字面上理解就是去const属性。

static_cast,命名上理解是静态类型转换。类似于C风格的强制转换,但有类型检查。

1. 基类和子类之间转换:其中子类指针转换成父类指针是安全的;但父类指针转换成子类指针是不安全的。(基类和子类之间的动态类型转换建议用dynamic_cast)

2. 基本数据类型转换。enum, struct, int, char, float等。static_cast不能进行无关类型(如非基类和子类)指针之间的转换。

3. 把空指针转换成目标类型的空指针。

4. 把任何类型的表达式转换成void类型。

5. static_cast不能去掉类型的const、volitale属性(用const_cast)。

dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。有条件转换,运行时类型安全检查(转换失败返回NULL):

1. 安全的基类和子类之间转换。

2. 必须要有虚函数。

3. 相同基类不同子类之间的交叉转换。但结果是NULL。

reinterpreter_cast,仅仅重新解释类型,但没有进行二进制的转换。

1. 转换的类型必须是一个指针、引用、算术类型、函数指针或者成员指针。

2. 在比特位级别上进行转换。它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一个整数,在把该整数转换成原类型的指针,还可以得到原先的指针值)。但不能将非32bit的实例转成指针。

3. 最普通的用途就是在函数指针类型之间进行转换。

  1. 很难保证移植性。

 

6 static全局变量与普通全局变量:前者只初始化一次,防止在其他文件中被引用。

Static局部变量与普通局部变量:前者只初始化一次,下一次依据上一次结果值。

Static函数与普通函数:前者在内存中只有一份,后者在每次被调用中维持一份拷贝。

Static数据成员:独立于该类的任何对象而存在,必须在类定义体的外部定义。

Static成员函数:没有this指针,直接访问类的static成员,不能直接使用非static成员。

 

7 指针和引用,都定义了间接操作对象的功能:

A 指针定义时可以不初始化,引用初始化且不能改变。

B 指针赋值是重新指向,引用则是修改对象本身。

C 指针之间存在类型转换。

 

8 栈区:由编译器自动分配和释放,存放函数的参数值和局部变量。

堆区:一般由程序员分配和释放,存放动态分配的变量。

全局区(静态区):存放全局变量和静态变量,初始化和未初始化的分开放。

文字常量区:存放常量字符串,程序结束自动释放。

程序代码区:参访函数体的二进制代码。

 

9 关于指针的数据类型及含义:

int *p[4]          指针数组p,它由4个指向整型数据的指针元素组成

int (*p)[4]         p为指向包含4个元素的一维数组的指针变量

int (*p)()          p为指向函数的指针,该函数返回一个整形值

int **p            P是一个指针变量,它指向一个指向整型数据的指针变量

int * const p       p是常指针,其值是固定的,及其指向不能变

const int * p       p是指向常量的指针变量,不能通过p改变其指向的对象的值

 

10 Const修饰函数参数:传递过来的参数在函数体内不可以改变。

Const修饰类的成员函数:不能修改类中任何非const数据成员;

 

11 进程通信:

A 共享存储:在内存中划出一块共享存储区域,诸进程对共享区的读写交换信息。

b 管道:链接一个读进程和写进程实现通信的共享文件。

c 消息:以格式化的消息为单位,将通信的数据封装在消息中,利用操作系统原语通信。

d C/S:套接字,远程过程调用和远程方法调用。

 


若无特别说明,本站所有文章均为企鹅之家原创,为了尊重站长的劳动成果,转载请注明本文固定链接:http://qiezhijia.wang/yi_dian_c_mian_shi_jing_yan/良好的网络环境由你我共创!
喜欢 (0)or分享 (0)

您必须 登录 才能发表评论!