C++基础知识点

C中static做用

  (1)隐藏。 当咱们同时编译多个文件时,全部未加static前缀的全局变量和函数都具备全局可见性,故使用static在不一样的文件中定义同名函数和同名变量,而没必要担忧命名冲突。
  (2)static的第二个做用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是惟一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量。
  (3)static的第三个做用是默认初始化为0.其实全局变量也具有这一属性,由于全局变量也存储在静态数据区。在静态数据区,内存中全部的字节默认值都是0×00,某些时候这一特色能够减小程序员的工做量。程序员

C++中const做用

  const修饰的内容是只读的, 定义常量只是一种使用方式而已,还有const数据成员,const参数, const返回值, const成员函数等, 被const修饰的东西都受到强制保护,能够预防意外的变更,能提升程序的健壮性。编程

C与C++定义常量的不一样

  C中是使用宏#define定义, C++使用更好的const来定义。
  区别:
  1)const是有数据类型的常量,而宏常量没有,编译器能够对前者进行静态类型安全检查,对后者仅是字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误(边际效应)。
  2)有些编译器能够对const常量进行调试, 不能对宏调试。安全

既然C++中有更好的const为何还要使用宏?

  const没法代替宏做为卫哨来防止文件的重复包含。ide

C++中引用和指针的区别?

  引用是对象的别名, 操做引用就是操做这个对象, 必须在建立的同时有效得初始化(引用一个有效的对象, 不可为NULL), 初始化完毕就不再可改变, 引用具备指针的效率, 又具备变量使用的方便性和直观性, 在语言层面上引用和对象的用法同样, 在二进制层面上引用通常都是经过指针来实现的, 只是编译器帮咱们完成了转换。 之因此使用引用是为了用适当的工具作恰如其分的事, 体现了最小特权原则。函数

C与C++的内存分配方式

  1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在,如全局变量,static变量。
  2)在栈上建立。在执行函数时,函数内局部变量的存储单元均可以在栈上建立,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,可是分配的内存容量有限。
  3)从堆上分配(动态内存分配)程序在运行的时候用malloc或new申请任意多少的内存,程序员负责在什么时候用free或delete释放内存。动态内存的生存期本身决定,使用很是灵活。工具

new/delete 与 malloc()/free() 的区别

  malloc() 与 free() 是C语言的标准库函数, new/delete 是C++的运算符, 他们均可以用来申请和释放内存, malloc()和free()不在编译器控制权限以内, 不能把构造函数和析构函数的任务强加给他们。www.cdtarena.com编码

#include<a.h>和#include"a.h" 区别

  答:对于#include <a.h> ,编译器从标准库路径开始搜索 a.h对于#include "a.h" ,编译器从用户的工做路径开始搜索 a.h设计

在C++ 程序中调用被 C编译器编译后的函数,加 extern "C"

  C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不一样。假设某个函数的原型为:void foo(int x, int y);该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字。C++提供了C链接交换指定符号extern"C"来解决名字匹配问题。指针

C++中的是多态性

  多态性是面向对象程序设计语言继数据抽象和继承以后的第三个基本特征。它是在运行时出现的多态性经过派生类和虚函数实现。基类和派生类中使用一样的函数名, 完成不一样的操做具体实现相隔离的另外一类接口,即把" what"从"how"分离开来。多态性提升了代码的组织性和可读性,虚函数则根据类型的不一样来进行不一样的隔离。调试

动态特性

  在绝大多数状况下, 程序的功能是在编译的时候就肯定下来的, 咱们称之为静态特性。 反之, 若是程序的功能是在运行时刻才能肯定下来的, 则称之为动态特性。C++中, 虚函数,抽象基类, 动态绑定和多态构成了出色的动态特性。

C++封装的实现

  封装来源于信息隐藏的设计理念, 是经过特性和行为的组合来建立新数据类型让接口与具体实现相隔离。C++中是经过类来实现的, 为了尽可能避免某个模块的行为干扰同一系统中的其它模块,应该让模块仅仅公开必须让外界知道的接口。

RTTI

  RTTI事指运行时类型识别(Run-time type identification)在只有一个指向基类的指针或引用时肯定一个对象的准确类型。
 

拷贝构造函数

  它是单个参数的构造函数,其参数是与它同属一类的对象的(常)引用;类定义中,若是未提供本身的拷贝构造函数,C++提供一个默认拷贝构造函数,该默认拷贝构造函数完成一个成员到一个成员的拷贝

深浅拷贝

  浅拷贝是建立了一个对象用一个现成的对象初始化它的时候只是复制了成员(简单赋值)而没有拷贝分配给成员的资源(如给其指针变量成员分配了动态内存); 深拷贝是当一个对象建立时,若是分配了资源,就须要定义本身的拷贝构造函数,使之不但拷贝成员也拷贝分配给它的资源。

面向对象程序设计的优势

  开发时间短, 效率高, 可靠性高。面向对象编程的编码具备高可重用性,能够在应用程序中大量采用成熟的类库(如STL),从而虽短了开发时间,软件易于维护和升级。

相关文章
相关标签/搜索