C++、、

1)C++面向对象的三大特征:多态、继承、封装;

2)头文件中 ifndef/define/endif 的作用是:防止头文件的重复包含和编译;

3)可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同:

     静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量;
     栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分               配的内存容量有限:
     堆区:亦称动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在适当的时候用free或delete释放内存。动态内存的生存期可以由我们决                  定,如果我们不释放内存,程序将在最后才释放掉动态内存。

4)struct 和 class 的区别:class中变量默认是private,struct中的变量默认是public。struct可以有构造函数、析构函数,之间也可以继承等等。C++中的struct其实和class      意义一样,唯一的不同是struct默认的访问控制是public,而class中默认的访问控制是private。

5)关键字 static 的作用:C语言中:

   1.在函数体内static变量的作用范围为该函数体,并且该变量的内存只能分配一次,其值下次调用时仍维持上次的值;

   2.在模块内static全局变量可以被模块内的所有函数访问,但不能内模块外其他函数访问;

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

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

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

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

    C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为 void fun(int x,int y),该函数被C编译器编译后在库中的名字为_fun,而C++编译器则会产生像_fun_int_int之类的名字。

   所以C++提供了C连接交换指定符号extern "C"解决名字匹配问题。

posted @ 2015-10-12 21:44  jx_yangbo  阅读(173)  评论(0编辑  收藏  举报