一、C/C++ 概述

1. 面向对象的几个特征

  • 封装性:
    • 把对象的属性和方法结合成一个独立的系统单位,并尽可能隐藏对象的内部细节,外部若想访问,必须通过指定的函数接口
    • 封装是面向对象思想描述的基础,从此程序员不再面对一个个变量和函数,而是要放眼大局,面对一个个对象来看问题。
  • 继承性:
    • 子类自动共享父类之间数据和方法的机制。
  • 多态性:
    • 在基类中定义的属性和行为(方法)被子类继承后,可以具有不同的数据类型或者表现行为(方法)等特性。
    • 可以对不同类的对象调用相同的方法,产生不同的结果。

2. C和C++的区别

  • C++允许我们在程序的任意位置声明变量。这大大的提高了大型C++ 程序的可读性,因为这样子我们就可以在实际需要使用变量的时候才来声明他们。
  • C++ 允许函数名重载。
  • C 中使用结构体时需要加上前缀 struct, 而在C++中则不用 。
  • C++ 中的换行符为 “endl”, 而C语言中的为“\n“.
  • // 注释某一行代码或者/* 注释某一段代码 */

3. C++的特点

  • 封装和信息隐藏
  • 抽象数据类型
  • 继承和派生的方式实现程序的重用机制
  • 通过函数与运算符的重载,通过派生类中虚函数的多重定义,实现多种情形下的多态特征
  • 通过模板等实现了类型和函数定义的参数化

4. <<和>>的重载使用

  • 重载事实上就是允许我们按照不同的方式使用同一个操作符
  • << 用于将信息送到输出流对象
  • >> 用于从输入流对象提取信息

5. cin/cout 的使用(类似于C语言中的scanf()/printf()函数)

  • printf 函数(f: format)
    • 使用形式:printf("控制字符串", 输出列表)
    • 控制字符串由普通字符、格式字符(eg: %m.nf)、转义字符(eg: \n)这三类内容组成。
    • 输出列表中的数据可以是常量、变量或表达式,数据之间用逗号","分隔开来,数据的个数和类型必须与控制字符串中格式说明的个数和要求一致。
  • scanf 函数(f: format)
    • 使用形式:scanf("控制字符串", 地址列表)
    • 控制字符串由普通字符(要求用户在键盘上输入的字符)格式字符(eg: %m.nf)这二类内容组成。
    • 地址列表既可以是变量的地址,也可以是数组名或指针变量名。变量的地址获取方式:&变量
    • 当用一条scanf语句输入多个数据时,注意数据的分割符要和控制字符串中指定的分割符一致。
  • int i; cin >> i; cin 输入操作符又称为提取操作符,它一次从输入流对象 cin 提取一个整数,使用空格分割所要提取的数据
  • 当用户进行键盘输入时,对应的字符将输入到操作系统的键盘缓冲区中。这样,当用户点击键盘上的Enter键时,操作系统把键盘缓冲区的内容传输到cin 流的内部缓冲区>> 操作符随后从这个缓冲区提取需要的信息。
  • cout 是一个输出流对象,它是”console out(控制台输出)“的缩写。是属于basic_ostream 类的对象。ostream 类在iostream头文件中定义。
  • cin**(代表键盘)的使用形式:cin >> 变量1 >> 变量2 >> … >> 变量n; 变量使用前要提前定义,当输入**多个数据时,用空格、Tab键或回车键分隔。
  • cout (代表显示器)的使用形式:cout << 表达式1 << 表达式2 << ‘ ’ << … << 表达式n << endl; 插入了空格和换行符
    一、C/C++ 概述_第1张图片
    cin_cout_method
cin.peek()  
从输入流中的字符挑取一个字符,将其提取出来进行其他操作,该操作不会改变输入流中的内容。就好比从一队苹果中拿出来和照片中的苹果比一比再放回去一样

cin.get(a)  
从输入流中获取一个字符到a中也可以a = cin.get(); 也可以是单纯的cin.get()获取的字符并不去存入到某个内存段中

拓展:cout << cin.get(); 输出的是获取的字符的ASCII的值;cout << cin.get(p);输出的是p的内存地址;cout<<(p = cin.get()); 输出的是p的值,相当于p = cin.get();cout<cin.ignore(a,ch)  
方法是从输入流中提取字符,提取的字符被忽略不被使用。每抛弃一个字符,它都要计数和比较字符:如果计数值达到a或者被抛弃的字符是ch,则cin.ignore()函数执行终止;否则,它继续等待。它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响;

cin.getline(buf,a)   
方法是从输入流中读取a个字符到字符串buf中,如果输入不足a个字符那么读到换行符为止
拓展:cin.getline()包含三个参数,第三个参数默认为'\0'若将其改为cin.getline(buf,5,'a')当输入为jkajk时候输出为jk,当输入为jkjkjk时候,输出为jkjk;

cin.gcount()
计算从输入流读入到字符串中字符的个数;

cin.read( buf,a)
从输入流中读取a的字符buf字符串中;

cin.write(buf,a)
从buf字符串中读取a个字符到输出流中;

cout.precision(a)
设置输出的精确度,保留a位小数;

cout.width(a)
设置下一次输出的输出宽度为a,输出的右对齐,不足的用空格补足,超过的输出全部的数据;

while( cin >> i ) 中,表达式cin >> i 返回输入流对象本身,也就是cin。但是,如果到达了文件尾或者提取操作符遇到一个非法值,这个返回值将是 false。

6. 调试

  • 设置断点:在需要设置断点的行前面单击左键或者单击右键选择 Insert Breakpoint 即可或者按F9键
  • 运行到断点:按F5键或者绿色的调试三角形即可。
  • F10(step over)、F11(step into)、Shift+F11(step out)
  • Locals窗口可以查看当前位置函数里的局部变量的值。
  • 可以在Watch窗口中输入表达式或者变量来跟踪其值的变化。按F5进入Debug模式后,可在Debug | Windows | Watch 中调出监视窗口,在Debug | Windows | Memory 中调出内存窗口。
  • 一个错误可能会产生若干条错误信息,但是第一条信息最能反应错误的位置和类型,所以务必先根据第一条错误信息进行修改,修改后立即进行编译,观察是否还有错误信息。
  • 在VS的输出窗口中,双击任何一条错误信息,系统就可以定位到源程序中错误所在的位置。
    一、C/C++ 概述_第2张图片

7. 注意事项

  • #include "文件名"#include <文件名>的区别:前者在预处理时首先在当前文件所在的文件目录中寻找,若找不到才到系统指定的文件夹中查找;后者直接在系统指定的文件夹中寻找。
  • system("pause"); 的用法:从程序中调用系统命令暂停,然后Press any key to continue . . .,这样做的好处是:使Debug中生成的可执行程序不会一闪而过。
  • double型变量对应的格式字符为%lf;变量的地址(是个整数)对应的格式字符为%08X or %p
  • %06.2f // 表示位宽为6,小数点后保留两位有效数字,小数点也占位。eg: 输入3.493; 输出003.49

你可能感兴趣的:(C++)