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. 若数组名作实参而指针变量作形参,函数调用实参传给形参的是()
数组第一个元素的地址.