C++&C面试题100道分析(1-20)

1.c和c++中struct的区别?

难易:容易

在c++中,struct已经和类十分的相似了,struct具有继承,可以存在成员函数,具有访问控制权限的设置.而c语言中,struct中是不可以有成员函数的,但是可以存在成员指针.

是否访问控制权限,是否可以有成员函数

 

2.c++中如何struct和class的区别?

难易:容易

c++中class和struct是十分相似的类型,两者具有继承,访问控制权限的设置等功能.区别仅仅在于访问控制权限的默认值上.

在继承方面,class的默认继承方式是private,而struct的默认继承方式是public

在数据成员方面,class的默认方式是private,而struct的默认方式是public.

除此之外,class和struct就是一样的.

 

3.如何判断程序是以c++还是c语言的方式编译的

在c++中,有一个宏定义,_cplusplus

#ifdef _cplusplus

  代码

#else

  代码

#endif

在c和c++混合编程的时候,可能会使用到,_cplusplus和extern

 

4.c和c++的区别?

c语言是面向过程的语言,他的核心是函数

c++是面向对象的语言,他的核心是类和对象

c++是c语言的超集,

 

5.class A{

  virtual void func1(); ;
  void func2();
}
class B: class A{

  void func1(){cout < < "fun1 in class B" < < endl;}
  virtual void func2(){cout < < "fun2 in class B" < < endl;}
}

判断AB中那些函数是虚函数.?

A中的func1是虚函数,B中的func1也是虚函数

B中的func2是虚函数.

虚函数的作用,在通过子类给父类定义的时候,如果子类比父类的成员多,想要使用子类的这些成员就需要设置成虚函数.

程序启动之初系统会建立一个虚函数表.A定义的对象会指向A的虚函数表中的位置,B定义的对象会指向B中虚函数的位置,如果把B的对象那个赋值给A,则B依然指向的是B的虚函数表.

 

6.int id[sizeof(unsigned long)];这个对吗?为什么?

数组的大小必须在编译时候就是确定的,sizeof()是一个运算符,这个值也是确定的.正如int id[5+6]一样,是正确的.

 

7.静态全局变量的作用域是?

静态全局变量的的作用域是本文件中,相对于全局变量和局部变量,比较中庸.

 

8.c++中函数参数传递有几种类型?

  3种,值传递,指针地址传递,引用传递.

 

9.对于一个平凡使用的短小函数,在c语言中应用什么来实现,在c++中使用什么来实现.

  c中使用宏定义(注意添加括号),c++中使用内联函数来实现.

  (c语言中没有内联函数)

 

10. 引用和指针的区别

  (1)引用必须初始化,指针不需要

  (2)引用的值不可以改变,指针可以改变

  (3)不存在空的引用,但存在空的指针,

  (4)不存在引用的引用,但是存在指针的指针

 

11.c++中的关键字virtual和inline的含义是什么?

  virtual使用来修饰类中的成员函数,说明这是一个虚函数.  

  虚函数的作用是派生类中重新定义基类的方法,在基类中将该方法设置成虚方法,这样就可以启用动态联编.

  静态联编:在程序编译的时候,就确定了,需要调用那一个方法

  动态联编:在程序执行的时候,才能确定调用哪一个方法

  inline是声明为内联函数的.目的是为了提高函数的运行效率,减少上下文的过度.

 

12.在Vs & Vc 中,编译工具栏中Debug和Release选项是什么含义?

  Debug是调试版本,他包含了调试的信息,没有对代码进行优化

  Release是发行版本,代码大小和速度都是最优的.

 

13.为什么在C中有malloc和free,在c++中还要添加new和delete呢?

  首先,malloc和free是库函数,而new和delete是运算符.

  在c++中使用了对象之后,malloc无法满足动态对象的要求.

  对象的建立需要执行构造函数,销毁之前需要执行析构函数,

  库函数不再编译器的控制之中,所以不能升任工作.

 

14.如果在申请动态内存时找不到足够大的内存块,malloc 和 和 new 将返回 NULL 指针,宣告内存申请失败。你是怎么处理内存耗尽的?

  判断返回的指针是否为NULL,如果为NULL马上return终止程序

  

15.c++是不是类型安全的语言?

  类型安全,不是相同类型的数据,不可以访问相同的地址.

  c++不是类型安全的,但是是强类型的

 

16.如何写一个程序,判断系统是32位还是64位的.

  int类型,指针类型的位数都是根据计算机系统的.

  int 为 4 ,就是32位机

 

17.写一个程序,判断是16位还是32位,不可以使用sizeof

  计算~0的值,如果是32位,就是65536.

 

18.多态类中的虚函数表是 Compile-Time ,还是Run-Time 时建立的? ?

  虚函数表是在编译环境时候建立的,所以Complie-Time时候建立的.

 

19.常见的转义字符?

  \a \n \\ \' \"

 

20. 若数组名作实参而指针变量作形参,函数调用实参传给形参的是()

  数组第一个元素的地址.

 

 

 

 

转载于:https://www.cnblogs.com/qiny1012/p/9376809.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值