时光飞逝~

C++语言知识点总结一

一、C++语言区比C语言更强大地方

1.C++支持面向对象

2.C++支持泛型编程

3.C++支持运算符重载

4.C++支持异常

二、C++程序

1.C++程序和C程程序的差别

1)c++使用g++编译器进行编译。

2)c++的文件后缀是.cpp/.C/.cc/.cx ,这四种都可以,但我们通常会选择.cpp

3)不再使用C的头文件,但是仍然兼容,包含C的头文件的时候将原来的.h去掉,前面加c,如<cstring>(C++的风格),当然也可以仍然使用C的的风格,如<string.h>,但是个人不推荐,C风格和C++风格混杂在一块显得不太统一。

4)标准C++头文件不再以.h为后缀。

5)C++新增了名字空间,在c++中,所有的常量、变量、函数、类等等都处在特定的名字空间中,如果在程序中不显示的指明,默认在"::"名字空间中。

许多标准函数都处于std::名字空间中,如标准输入输出分别为 std::cout,std::cin

名字空间的声明格式为:namespace namepace_name{...}

访问特定名字空间的成员的时候有三种形式 下面以标准std名字空间为例

1.using namespace std;//该std名字空间中的内容在该作用域可见(切记是可见)

2.using std::cout//把std名字空间中的cout对象引入当前作用域(切记是当前作用域,要注意函数重载的问题)

3.std::cout//在cout前面加其名字空间限定。

三、结构、联合、枚举、布尔、函数

1)结构

C++中结构是可以当做类来使用的,不仅可以声明成员变量,还可以声明成员函数,而C只能用来声名成员变量。c中创建结构体对象的时候需加struct关键字,而C++中可以省略,当然也可以保留。结构中如果不加访问控制符的话默认是public的访问权限,和c++中的类正好相反。

2)联合

同c,只是c++中支持匿名联合,联合可用于判断该机器数据传输是大端模式还是小端模式

#include<iostream>

#include<cstdio>

int main{

//匿名联合

  union{

    int m_x;

    char m_y[4];

  };

  m_x = 0x12345678;

  for(int i=0;i<4;i++)

    printf("%x",m_y[i]);//看输出结果,如果是78562312则是小端,反之大端。

  printf("\n");

  return 0;

}

3)枚举

c++中的枚举已经单独独立出来,不同于c语言的整型特诊。如enum(a,b,c);enum x = 1;//词句在c语言中对,c++中错。

4)布尔类型

c++中的bool类型已经专门做为一种数据类型,逻辑真(true),逻辑假(false)。除'\0',0,NULL,false以为的其他任何数据赋值给bool类型变量,其结果都为true。

5)函数和函数重载

5.1 c++中的函数不再支持c语言中的隐式声明,调用前必须先声明或定义,返回类型int不能省略。

5.2 同名,返回值或参数表不同的函数可以构成重载,其实质是编译器在编译的阶段为重载的函数进行了换名,其本质还是不可以重名的。如果不想让编译器进行偷偷的换名,需要加上extern "C" 关键字。

四、哑元和函数默认值、内联函数

1)哑元

在c++中允许使用只有形参类型,没有形参变量的哑元的形式声明函数,如void study(int),哑元的作用是为了函数间的区别以及向下兼容。操作符重载中的前++和前--的重载就用到了哑元。

2)函数默认值

函数形参允许设置默认值,设置默认值后如果在代码段中没有再为该形参赋其他的值,就按默认值来计算,形参默认值为右对齐。

3)内联函数

内联函数的特点:在代码执行的时候,内联函数会在调用它的地方展开,就向宏函数的展开类似,但是宏函数不能访问类中的成员函数,而且用宏的话存在一定的潜在风险,所有就有了内联函数

内联函数一般都定义在类中,一般代码短小的函数可以考虑使用内联,可用内联关键字inline修饰函数,但该还函数最终是否内联取决于编译器。

五、c++的内存分配

c++中一般用new和delete关键字实现动态内存的分配和删除。如 int* p = new int(100);int* p1 = new int[25];delete p;delete p1;这就是一般的分配和删除内存

还可以定位分配内存。如

  char a[100] = {};

  new(a)int[25];

定位分配不需要显示delete 了,内存会随着a的释放而释放。

六、使用引用应该注意的问题

1.引用必须初始化,而且必须用变量初始化。

  如:int& a = 10;//错

  cont int& a = 10;//可以,此为常引用。

2.引用不能为空、引用不能为其他引用

posted on 2013-04-05 16:44  时光飞逝~  阅读(432)  评论(0)    收藏  举报