文章目录

  • 一 c++的特点与oo思想
    • 1 c++特点
      • 1.1 封装
      • 1.2 抽象
      • 1.3 继承
      • 1.4 多态
      • 1.5 cout介绍
      • 1.6 using namespace std;
      • <<符号
    • 2 思考 & cout对象的多个方法
      • 3.1 cin.ignore()&cin.getline()
      • 3.2 cin.get()&cin.peek()
      • 3.3 cin.gcout() & cin.read()
    • 3 cout对象的多个方法
      • 3.1 cout.precision()//精度控制
      • 3.2 cout.width()& cin.width()

一 c++的特点与oo思想

1 c++特点

  • c++有个绝对的优势,就是针对不同的的对象去做实例化,这就是所谓的oo思想
  • 【根本思想】在面对对象的思想中,任何复杂的事物都可以被看作一个对象。一个在复杂的结构都是由千千万万个对象组成的。
  • 他们彼此之间互相联系、组合、最终形成了一个对象。而对于对象,抽象起来最终可以分为两个要素:属性和行为。
  • 在面对对象编程中,程序员不在面对一个个函数和变量,而是要放眼大局,面对一个个对象来看待问题。
  • 每个对象都是一个完整的独立的个体,它是由相关的属性和行为组合,与外界分隔。
  • 例如:一家跨国公司,它在全球有很多分公司,每个分公司都有自己的员工和一套自己的运行体系。对于总公司来说,分公司好比“黑箱”,总公司不需要干预分公司如何调配人员工作等,只需下达命令和指标。

1.1 封装

  • 封装意味着把对象的属性和方法结合成一个独立的系统单元,并尽可能隐藏对象的内部细节。
  • 封装是面向对象思想描述的基础,从此程序员面对的不再是许多复杂的函数和过程实现,而是少数具有行为能力的个体实例。

1.2 抽象

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

1.3 继承

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

1.4 多态

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

1.5 cout介绍

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

1.6 using namespace std;

using namespace std;
  • 这条指令带给我们一个全新的概念:名字空间。
  • 就是c++标准库所使用的所有标识符【类、函数、对象等的名称】都是在同一个特殊的名字空间【std】中来定义的。
  • 如果我们没有使用这条指令,我们将需要使用std::cout这样的语法来调用输出流对象。

<<符号

它体现了c++的另一个特点:支持重载。
重载事实上就是允许我们按照不同的方式使用同一个操作符。

2 思考 & cout对象的多个方法

#include<iostream>
using namespace std;
int main()
{int sum = 0;cout << "输入一串整数和任意数目的空格:";int i;while (cin >> i){sum += i;while (cin.peek() == ' ')//peek的意思是偷窥。在这里意思是只是识别到字符,但是并不把字符从流中拿走{cin.get();}if (cin.peek() == '\n')break;}cout << "结果是:" << sum << endl;return 0;
}
/*
用法一:cin.get(字符变量名)可以用来接收字符
用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格
用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足.
cin.peek()  其返回值是一个char型的字符,其返回值是指针指向的当前字符,但它只是观测,指针仍停留在当前位置,并不后移。如果要访问的字符是文件结束符,则函数值是EOF(-1)。
其功能是从输入流中读取一个字符 但该字符并未从输入流中删除
*/

注意:

  • 该程序使用了流对象cin。
  • 这个对象的类型是istream,它知道如何从用户终端读取数据。
  • cin>>i; cin输入操作符又称为提取操作符,它一次从输入流对象cin提取一个整数。
  • 当用户进行键盘输入时,对应的字符将输入到操作系统的缓冲区中。
  • 这样,但用户点击键盘上的“enter”键时,操作系统把键盘缓冲区的内容传输到cin流的内部缓冲区,“>>”操作符随后从这个缓冲区提取需要的信息。
  • 如果用户不进行键盘的输入程序将会阻塞。这就是阻塞性【blocking】 io的例子。最初定义为右移操作符,它在C中进行了重载。当他按照这里所示的方法使用时。它就用于从输入流对象提取信息。
  • 另外这个操作符对所有内建的数据类型都进行重载,所以它可以从输入流对象提取出int,float,double型数据,也可以提取字符串等数据。
  • 在while(cin>>i)中,表达式cin>>i返回输入流对象本身,也就是cin。但是,如果达到了文件尾或者提取操作符遇到了一个非法值,这个返回值将是false。
  • 注意,在while(cin>i)中·当用户在键盘上点击enter键的时候,在这一句并不会结束另外。
  • 观察两个程序,我们发现:C和C++事实上在声明变量的事实上有点不同,C++允许我们在程序的任意位置声明变量。
  • 这大大的提高了大型C++程序的可读性,因为这样子我们就可以在突际需季使用变量的时候才来声明他们。

3.1 cin.ignore()&cin.getline()

#include<iostream>
using namespace std;
int main()
{char buf[20];cin.ignore(7);//忽略前7个字符cin.getline(buf, 10);//输入字符串,包括空格cout << buf << endl;
}

3.2 cin.get()&cin.peek()

#include<iostream>
using namespace std;
int main()
{int sum = 0;cout << "请输入一串整数和任意数目的空格:" << endl;int i;while (cin >> i){sum += i;while (cin.peek() == ' ')//屏蔽空格{cin.get();}if (cin.peek() == '\n'){break;}}cout << "所有数字的和是:" << sum << endl;return 0;
}

3.3 cin.gcout() & cin.read()

cin.get()读取非空格的字符

#include<iostream>
using namespace std;
int main()
{const int size = 50;char buf[size];cout << "请输入一段文本:" << endl;cin.read(buf, 5);cout << "字符串收集到的字符数为:" << cin.gcount() << endl;cout << "文本信息为:";cout.write(buf, 5)<< endl;return 0;
}

3 cout对象的多个方法

3.1 cout.precision()//精度控制

#include<iostream>
using namespace std;
int main()
{double result = sqrt(7.0);cout << "对3开方保留小数点后0~9位,结果如下:" << endl;for (int i = 0; i < 9; i++){cout.precision(i);cout<< result << endl;cout << "当前的输出精度为:" << cout.precision() << endl;}
}

3.2 cout.width()& cin.width()

cout.width():
- 输出n个字符,字符自动右对齐,左边用空格补上,视字符串中的空格为读取断开,即遇到空格时认为读取完了一块,在读取下一块,如果字符串长度大于n,则全部读取到下一个空格读完一块;
会把字符串全部读取,分成几块,每块n-1个字符,只输出第一块,如果字符串长度不满 n-1,剩下的用空格补齐;
cin.width():
- 从第n个字符开始到字符串不输出,输出时n-1个字符前边没有空格;同样也是只输出第一块

#include<iostream>
using namespace std;
int main()
{int width = 4;char str[20];cout << "请输入一段文本:" << endl;cin.width(5);//cin>>str;实际只能提取4个字符,str最后一个是空字符,其他的放在流中等待接受。while (cin >> str){cout.width(width++);//将4个字符输出,设置每次输出的域宽增加1cout << str << endl;cin.width(5);}return 0;
}

c++(小甲鱼笔记01-语言与oo思想)相关推荐

  1. python小甲鱼笔记

    提示:python小甲鱼笔记 文章目录 前言 〇.函数 1.常用基本函数 2.常用表函数 3.常用子函数 4.输入.输出 5.字符串函数 5.快捷键 一.常用函数案例 1.文本输出 2.猜数 if 实 ...

  2. (第二版)零基础入门Python小甲鱼-笔记-第三章-p5

    (第二版)零基础入门Python小甲鱼-笔记-第三章-p5 变量和字符串(下) 上节课讲了有些字符比如换行符.TAB制表符还有单引号.双引号等等...可以通过转义字符来实现,今天来谈谈原始字符串 1. ...

  3. 小甲鱼python课后题和答案简书_【py小甲鱼笔记】-列表

    要点:通过print(dir(list))来查看列表的所有方法,然后通过help(list.index).help(list.sort) 等查看帮助文档,这样就可以快速了解列表的每一个函数的用法 一. ...

  4. 数据结构与算法|马踏棋盘算法(小甲鱼)C语言代码的算法分析

    马踏棋盘算法(骑士周游问题)的算法分析 C语言代码部分来自小甲鱼的<数据结构与算法> 文章目录 马踏棋盘算法(骑士周游问题)的算法分析 一.C语言代码实现 二.代码分析与算法思路 题目要求 ...

  5. 汇编语言笔记01_概述1(小甲鱼笔记总结)

    目录 1. 机器语言 机器语言是机器指令的集合 机器指令是01串 指令的三种表示方法 2. 汇编语言的产生 汇编指令和机器指令的差别在于指令的表示方法 汇编语言作用过程 3. 汇编语言的组成 汇编指令 ...

  6. 【跟着小甲鱼学C语言】P32 作用域和链接属性

    作用域和链接属性 1.链接属性 链接属性有三种,external,internal和none.external表示这个标识符可以被多个文件访问,internal表示只能被本文件访问.默认情况下,具备文 ...

  7. 小甲鱼python课后题和答案简书_【py小甲鱼笔记】-函数

    课后作业: 1. 请问这个函数有多少个参数? def MyFun((x, y), (a, b)): return x * y - a * b 如果你回答两个,那么恭喜你错啦,答案是0,因为类似于这样的 ...

  8. 小甲鱼最新c语言视频,带你学c带你飞系列

    https://www.bilibili.com/video/av8302677/?p=7

  9. 头插法 (单链表)-----鱼c小甲鱼笔记

    链表=信息域+指针域 链表中的信息域通过指针连接在一起 head   null 信息域存放链表中某个结点的内容,这里的结点相当于数组里的元素 指针域用来指向下一个跟它一模一样的结点 结点之间用指针串联 ...

最新文章

  1. c语言s开头的函数以及作用,C语言函数大全-s开头-完整版.doc
  2. 如何将OutputStream转换为InputStream?
  3. NAPI技术--在Linux 网络驱动上的应用和完善(二)
  4. git stash 强制恢复_开发中必须要掌握的 Git 技巧
  5. php面试基础项目,PHP面试经典题
  6. java调用python_Python教程:17个冷门但实用的小技巧
  7. 实战案例丨ModelArts在数据标注、数据过滤上的应用技巧:自动分组
  8. 支持iCloud简记
  9. Boost库编译安装
  10. cdr怎样把一张图片随意变形_如何设计一张趣味的海报?
  11. 【LeetCode】【字符串】题号:*58. 最后一个单词的长度
  12. Web前端期末大作业-食品零售综合商城模板网页设计源码(HTML+CSS)
  13. 以太坊存储项目Swarm (代币bzz)1.0 主网正式上线
  14. 转型不忘初心,决定一个高端存储厂商的未来
  15. Unity 回合制战斗系统(初级篇)
  16. 一种与生活周旋的能力
  17. esp8266学习笔记(5)——连接wifi、AP、UDP通信
  18. 40岁了去华为19级,薪酬翻倍,但现在比较稳定,值得吗?
  19. C++难学吗?为什么难学?如何去学?
  20. 论文阅读:Analysis of Scoliosis From Spinal X-Ray Images

热门文章

  1. [LeetCode]Number of Digit One,解题报告
  2. 【JokerのKCU105】SGMII。
  3. wave6000可以c语言编程吗,WAVE6000使用教程初步.doc
  4. 网络安全菜鸟学习之漏洞篇——sql(一)
  5. notebook pip install 只有星号_奇闻!他找马未都鉴宝,马未都:此盘子全世界只有三个,你的是第四个!...
  6. 获取新浪微博开发时的MD5签名
  7. 弹性云服务器的稳定可靠性,弹性云服务器的稳定可靠性
  8. QQ登录界面模仿和事件监听(下)
  9. 【赛迪智库】美国允许自动驾驶汽车取消方向盘对我国L4级自动驾驶的影响
  10. 应聘时最漂亮的回答、回答问题技巧