1、【C++基础】简介

2021-06-23 12:04

阅读:688

C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。

C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点。

C++ 是由 Bjarne Stroustrup 于 1979 年在新泽西州美利山贝尔实验室开始设计开发的。C++ 进一步扩充和完善了 C 语言,最初命名为带类的C,后来在 1983 年更名为 C++。

C++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。

注意:使用静态类型的编程语言是在编译时执行类型检查,而不是在运行时执行类型检查。

面向对象程序设计

C++ 完全支持面向对象的程序设计,包括面向对象开发的四大特性:

  • 封装
  • 抽象
  • 继承
  • 多态

标准库

标准的 C++ 由三个重要部分组成:

  • 核心语言,提供了所有构件块,包括变量、数据类型和常量,等等。
  • C++ 标准库,提供了大量的函数,用于操作文件、字符串等。
  • 标准模板库(STL),提供了大量的方法,用于操作数据结构等。

C和C++的联系

C++ 是在C语言的基础上扩展的,C语言的很多语法在 C++ 中依然广泛使用,例如:

C++ 仍然使用 charshortintlongfloatdouble 等基本数据类型;

C++ 仍然使用 if...elsewhileforswitchbreak 等分支或循环结构;

C++ 仍然使用 +-*/%++-->> 等运算符;

C++ 仍然使用 typedef#defineenumstruct 等;

C++ 仍然使用C语言中经典的指针(Pointer),并且使用范围有增无减,甚至不可或缺。

C++与C不兼容之处

C的大部分代码在C++上都能应用,而C++的代码在C上不能应用。(记住是大部分,不是所有)

C++是C语言的超集,虽然C++兼容C,但是C++中也有与C语言中不兼容的地方。

1、变量声明的位置

  C中变量声明和代码是分开的,必须在函数开始处声明;

  C++中,变量可以在任意处声明,只要保证先声名后使用的原则就可以。

2、struct结构体方面

  用struct定义变量

  struct mystruct{ int i;float x};

  在c中声明struct变量要这么写:struct mystruct a;

  在C++中前面不用加struct:mystruct a;

  一种兼容的用法是:

  typedef struct _mystruct{int i;float x;} mystruct;

  然后用mystruct 定义变量。枚举型(enum),联合体类型(union)也是同样。

  在C++中,struct结构体支持成员函数的定义,C中不行。另外要注意的是,C++中成员函数的默认访问说明符为public,这一点和类不同,类的默认访问说明符为private.

3、bool类型值

  C++中有bool(或boolean类型);C中可没有这样的bool类型,均为数值类型!需要注意的是真为非零(如:1,52,-5,-2等),假的数值为0。

4、 赋值

C语言中的赋值只有一中即:=;

C++中除了使用=外,还可以使用()。例如:int x(5);就等于: int x=5;我想这种写法是给C++中对象初始化时初始化属性是对象时使用的,那么对于基本类型也可以使用了。

5、函数

C语言中函数没有参数默认值,在C++中函数有参数默认值的概念,注意参数默认值与函数重载的区别。

C语言中函数的定义又两种形式,经典形式和标准形式,C++中只支持标准形式。

标准形式:int string(int x,float y){......}

经典形式: int string(x,y)int x;float y;{......}

C++的函数必须先声名原型或定义才能使用,因为C++是强数据类型语言,在C语言中,未声名和定义函数之前调用函数是允许的.

6、运算符&和关键字const

&运算符最基本的含义是取地址,C和C++中都支持这一语法。但在C++中&还可以表示引用。有了引用的概念后函数调用可以作为左值。例如:

int &rtux()......rtux()=5;

以上表达式在C++中完全正确,但在C语言中是非法的。

const关键字要注意一点不同的就是在C++的类函数中,函数可以声名是可以用const,表示这个函数没有改变类中的任何属性。如:void unchange()const;C不能有这样的生明。

7、extern说明符

在C语言的某些版本中,可以在程序中多次使用一个全局变量而无需使用extern说明符。但在C++中除定义全局变量外,在其他模块使用应先用extern生明。

8、void指针

在C语言中void指针可以赋给任何类型的指针,但在C++中,却不行,但可以先进行强制数据类型转换,在赋值。


评论


亲,登录后才可以留言!