C与C++语法总结

news/2024/7/3 12:23:27 标签: C++, 封装, 继承, 多态

【C编程思想:数据结构+算法】

C语言包含内容繁多,在这里做了一个归纳总结。分为6个部分:

数据类型

存储类型

基本要素

预处理

函数

文件操作


一、基本要素

1、常量

(1)数字常量

(2)字符常量

          普通字符:用单引号 ' ' 包起来。例如:‘a’,‘c’

         转义字符:以"\"开头,并用单引号 ' ' 包起来。例如:‘\n’(表示换行)   

(3)字符串常量

          双引号包起来,并在末尾自动加上‘\0’作为结束标志。例如:“hello world”。

(4)符号常量

          宏的使用要注意:a、宏无分号,无作用域,无生存期,无类型;b、加括号    

          例如:#define fps (50) 


2、变量


3、标识符

由字母、下划线、数字组成,以字母、下划线开头。包括:变量名、函数名、符号常量


4、运算符

(1)结合性:优先级相同则从左向右运算      

(2)优先级:单目 > 双目 > 三目

单目:[]、. 、->、指针

双目:算术:+ - * /

  位运算:& 、| 、~、^、《、》

             关系:>  <  >=  <= == !=

             逻辑:&&、 ||

三目:条件运算符(?:)

双目运算优先级:算术 > 移位> 关系 > 位> 逻辑 


5、表达式 = 运算对象 + 运算符


6、语句

表达式语句

函数调用语句

空语句

选择语句

循环语句

复合语句


二、预处理

1、宏

2、文件引用

3、条件编译


三、函数

1、形参:值传递,指针传递

2、嵌套

3、递归



四、数据类型

1、基本类型

整型

浮点型

字符型

枚举型

2、构造类型

数组

结构体

共用体

3、指针类型

4、void类型


五、储存类型

1、作用域

全局

局部

2、生存期

3、存放位置

注:

static:1、函数内:本函数内使用,值为上次函数内调用的值

            2、模块内:本模块内使用,值为上次模块内的值

(限定作用范围)

const:目的:阻止一个变量值改变

              1、只读变量

              2、定义时必须初始化

               (限定变量)

六、文件操作

1、基于文件指针的文件操作(缓冲):自动在内存中开辟一个缓冲区。ANSI C标准。

(1)文本流:便于输出。fgetc()、fputc()。

(2)二进制流:便于存储。fread()、fwrite()。

2、基于文件操作符的文件操作(非缓冲)。Linux系统调用。


【C++编程思想:对象+消息】

一、封装(类与对象)

1、访问控制

public/protected/private

2、成员函数

   (1)构造函数:

            a、产生并初始化对象

            b、拷贝构造函数:只有一个参数,并且参数是本类的引用

用于三种情况:1、用一个同类型的对象初始化一个对象

                         2、做为实参传给一个函数

                         3、函数返回时赋值一个对象

   (2)析构函数

   (3)操作符重载

3、函数的重载:同一个类中,同名函数的参数类型和个数不同

     函数的覆盖:派生类函数覆盖基类的同名函数,此基类函数必须是虚函数。派生类函数和基类虚函数参数个数和类型相同,返回类型相同

               函数的隐藏:派生类函数隐藏基类的同名函数。

                                   a、两个函数参数相同,基类不是虚函数

                                   b、两个函数参数不同,不论基类是不是虚函数,都会隐藏

4、对象与子对象


二、继承

1、单继承

(1)公有继承

          基类中的public/protected继承为派生类的public/protected,类内可以访问,类外派生类对象可以访问继承的共有成员。

          赋值兼容:派生类的对象/引用/指针可以赋值给基类对象/引用/指针

(2)私有继承

          基类中的public/protected继承为派生类的private,类内可以访问,类外派生类对象不能访问。

          派生类类内的成员函数可以访问基类的public/protected成员,类外不可访问基类的所有成员

(3)保护继承

         基类中的public/protected继承为派生类的protected,类内可以访问,类外派生类对象不能访问。

         派生类类内的成员函数可以访问基类的public/protected成员,类外不可访问基类的所有成员

2、多继承

(1)二义性

(2)虚基类

3、继承机制下的构造与析构函数

(1)析构函数的调用顺序:派生类  --->  派生类的子对象  --->  基类---> 虚基类 

 

三、多态

1、静态联编:根据调用时使用的实参决定调用那个函数

(1)重载:同一个类中,同名函数的参数类型和个数不同

(2)模板:以独立于任何特定类型的方式编写代码

2、动态联编

      (1)虚函数:在基类中定义并说明为virtual,并在派生类中重定义

      (2)实现动态联编需要满足三个条件:

   a、满足赋值兼容规则

   b、要声明虚函数

   c、由成员函数来调用或者通过指针、引用来访问虚函数

        通过指针访问虚函数时,指针所指向对象的类型决定调用哪个函数

        通过引用访问虚函数时,与指针类似。

3、通过对象名访问虚函数时,调用那个类的函数取决于定义对象名的类型(不属于动态联编)


四、I/O流类库

ios类派生的istream和ostream类分别提供对流进行提取和插入操作


五、异常处理

http://www.niftyadmin.cn/n/1568679.html

相关文章

排序法总结与比较

排序&#xff1a;对一序列对象根据某个关键字进行排序&#xff1b; 稳定&#xff1a;如果a原本在b前面&#xff0c;而ab&#xff0c;排序之后a仍然在b的前面&#xff1b; 例如&#xff1a;插入排序、冒泡排序、归并排序、计数排序、基数排序、桶排序 不稳定&#xff1a;如果a原…

一个例子说明虚函数

一、虚函数的基础知识 虚函数的定义&#xff0c;调用&#xff08;外部函数的指针或引用&#xff0c;成员函数&#xff09;&#xff0c;构造函数和析构函数中调用虚函数&#xff0c;虚析构函数 赋值兼容&#xff0c;构造函数的重载&#xff0c;构造函数的初始化列表 见代码&…

指针全解析

C语言中&#xff0c;指针式一个难点。主要表现在两个方面&#xff1a;1、各种类型的指针众数繁多。2、各种类型的指针如何应用。但是由于&#xff0c;指针有着运算速度快的优势&#xff0c;如果你进行操作系统&#xff0c;关注操作系统的内核(以linux为例)&#xff0c;你就会发…

字符、字符串、数组

1、字符数组的定义与初始化 字符数组的初始化&#xff0c;最容易理解的方式就是逐个字符赋给数组中各元素。 char str[10]{ I, ,a,m, ,‘h,a,p,p,y}; 即把10个字符分别赋给str[0]到str[9]10个元素 如果花括号中提供的字符个数大于数组长度&#xff0c;则按语法错误处理&#x…

C/C++编程细节(一)——你未必知道

1、printf函数的参数从右向左运算 char s[] "123", *p; p s; printf("%c%c%c\n", *p, *p, *p); 结果&#xff1a;321 分析&#xff1a;*p运算&#xff0c;先计算*p&#xff0c;然后再使p得值加1&#xff1b; 本题先输出最后一个*p&#xff0c;是1&…

加法乘法原理、排列组合、线性规划

【排列组合】 1、加法原理与乘法原理 加法原理&#xff1a;分类思想。一个事件的发生&#xff0c;分为几类事件的发生&#xff0c;通俗的说是好几种情况的发生。 乘法原理&#xff1a;分步思想。一个事件的发生&#xff0c;分为几个子事件分步发生。 这里要注意&#xff1a;…

shell 命令总结

【Shell环境中的预定义变量】 $$ Shell本身的PID&#xff08;ProcessID&#xff09; $! Shell最后运行的后台Process的PID $? 最后运行的命令的结束代码&#xff08;返回值&#xff09; $- 使用Set命令设定的Flag一览 $* 所有参数列表。如"$*"…

C/C++编程细节(二)——堆栈、数组、指针

1、堆与栈、静态数据区 【堆栈的动态静态分配】 A&#xff0c;静态分配是指在编译阶段确定大小&#xff0c;由编译器进行分配。 栈的申请就是静态分配的。 B&#xff0c;动态分配是指在执行阶段确定大小。 堆的申请都是在执行过程中进行的&#xff0c;堆只能进行动态分配…