C++学习笔记第一部分

Part  1

一  OO思想的特点

1. 封装

封装意味着把对象的属性和方法结合成一个独立的系统单位,并尽可能隐藏对象的内部细节。

封装是面向对象思想描述的基础,从此程序员面对的就不再是许多复杂的函数和过程实现,而是少数具有行为能力的个体实例。

 

2. 抽象

抽象的过程是对具体问题进行概括的过程,是对一类公共问题进行统一描述的过程。为了使某些必要的信息得以顺利的交流,设计者必须制定一个抽象,就如同一个协议,一个得到所有参与活动的有效个体支持的协议。

例如面包房提供一个抽象——“订单”。

 

3. 继承

子类对象拥有与其基类相同的全部属性和方法,称为继承。

这个事实上最容易理解:例如人都共有的一些属性:鼻子、眼睛、嘴巴……和一些方法:吃饭、睡觉、*&*&……

可以由此基础上再整出亚洲人、欧洲人、非洲人……

 

4. 多态

多态是指在基类中定义的属性和行为被子类继承后,可以具有不同的数据类型或者表现行为等特性。

加入动物是一个基类,它的子类有老虎、兔子、狗、小鸟……

那么作为动物有一个行为定义为Move(),那么这些子类继承下来后会根据自己的特性采取不同个性的Move()方式

二  从小程序说起

补充知识

 

1.关于 system("pause");

简单来说就是暂停的意思,一般在LINUX编程时会用到,等待接收信号,才会重新运行 。

在进行C/C++编程的时候,在运行程序查看输出效果时,会出现窗口闪一下就关闭的情况。

在C语言中一般通过添加getchar();

在C++中一般在main函数中的return之前添加system("pause");这样就可以看清楚输出的结果,pause会输出"press any key to continue. . ."。

system函数原型为 int system(char *command),在windows平台就是执行DOS命令,在linux平台就是执行shell命令

2.关于ungetc( ch, stdin );

此语句用于把getchar从输入流取出的字符放回输入流,以便下次其他操作从输入流中得到字符时不会出现混淆和取错

  1. size = sizeof(data) / sizeof(data[0]);  

用于计算长度

  1. #include <iostream>

Iostream头文件库 全局命名空间

  1. using namespace std;

使用命名空间std使得std在以下的所有代码区域都起作用

也可以使用std::cout<<...的输入方法

//cout 是一个输出流对象,它是”console out(控制台输出)“的缩写。是属于basic_ostream 类的对象。ostream 类在iostream头文件中定义。

//它体现了C++的另一个特点:支持重载。重载事实上就是允许我们按照不同的方式使用同一个操作符。我们后边会详细讲解。

或者使用using std::cout ...的输入方法

  1. std::endl;

相当于是换行符的作用

  1. C++分析:这个程序使用了流对象cin。这个对象的类为iostream,它知道如何从用户终端读取数据。

 

1、cin中>>操作符为重载过后的提取操作符,它从输入流对象cin提取一个整数。(当我们从键盘输入数据的时候,对应的字符将输入到操作系统的键盘缓冲区中,当按下“enter”键时操作系统把键盘缓冲区的内容传输到cin流的内部缓冲区,“>>”操作符随后从这个缓冲区提取需要的信息。)

 

2、cin cout会根据变量的数据类型自动输入或输出一个数值。

 

3、cin、cout对象的多个方法:cin.ignore(n),n为自然数,作用为输入时忽视n个字符,从第n+1个字符开始输入。

cin.getline(地址,n),n为字节数,将缓冲区的数据中的前n个字符输入到指定的地址。

 

实际读入的如果是字符组的话它的长度会是n-1,因为有一个\0

 

cin.peek(),在缓冲区中挑选一个字符进行判断。//只读不拿出来所以不用还回去

cin.get(),在缓冲区中获取一个字符,如果获取成功则返回值为该字符,用于单个字符的赋值

cin.read(地址,n)将缓冲区的n个字符读取到指定地址中。

cin.gcount( )    将缓冲区中的字符数作为返回值返回。

cout.write(地址,n)将此地址开始后的n个字符输出。

cout.precision( ) 其实是输出流cout的一个格式控制函数,也就是在iostream中的一个成员函数。precision()返回当前的浮点数的精度值

cout.precision(n)其实就是在输出的时候设定输出值以新的浮点数精度值显示,即小数点后保留n位。

cout.width()是获取当前的输出宽度,

cout.width(n)  n为整数则为以当前设定的输出宽度去输入数值。

 

4.while( (ch=getchar()) == ' ' ) ; // 屏蔽空格

 

5.while( cin >> i )

 

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

我们小举一个例子:如果我们试图把一个浮点数读取到一个 int 型变量中,当提取操作符遇到小数点时,它将使输入流对象置于一个错误的状态中,导致 cin 的值为 false。

 

二  从另外一个小程序说起(文件类操作,暂时放一下)

1.argc 与 argv[]

在程序中,main 函数有两个参数,整型变量 argc 和字符指针数组 argv[]。

argc 的含义是程序的参数数量,包含本身。

argv[] 的每个指针指向命令行的一个字符串,所以argv[0] 指向字符串"copyFile.exe"。argv[1] 指向字符串sourceFile,argv[2] 指向字符串destFile。

 

三 输入输出小结

1.cin 对象有几个专门用来报告其工作情况的成员函数,它们将返回一个真/假值来表明cin 的状态。

eof():如果到达文件(或输入)末尾,返回true;

fail():如果cin 无法工作,返回true;

bad():如果cin 因为比较严重的原因(例如内存不足)而无法工作,返回true;

good():如果以上情况都没发生,返回true。

clear( ); 如果输入错误则能重新输入.结合真正的清空数据流方法

cin.sync( );清空数据流但是不能重新输入

cin.clear(); //更改状态标识符 cin.sync(); //清空缓存区的数据流

四 重载

输入的数据类型不同但是函数名是相同的,注意要和覆盖区分开来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值