【C++准备】5.5-5.6

5.5-5.6计划

  • 基本语法特点
  • 面向对象
  • stl特性
  • C++11/14/17特性
  • 智能指针
  • 多线程、多进程
  • 实战

基本语法特点

  1. 类和对象
  2. 集成
  3. 多态、虚函数和 RTTI
  4. 函数重载
  5. 引用变量
  6. 泛型编程,这种技术是由模板和标准模板库(STL)提供的
  7. 处理错误条件的异常机制
  8. 管理函数、类和变量名的名称空间
  9. 弱项 文件输入输出
简单文件输入/输出

文本 I/O 相当于控制台 I/O 。
不管目标数据类型是什么,输入一开始都是字符数据-文本数据。

写入到文本文件中

cout 用于控制台输出

cout文件输出
必须包含头文件 iostream必须包含头文件 fstream
头文件定义了一个用处理输出的 ostream 类型头文件 fstream 定义了一个用于处理输出的 ofstream 类
头文件 iosteam 声明了一个 名为 cout 的 ostream 变量 (对象)需要声明一个或多个 ofstream 变量(对象)
必须指明名称空间 std;必须指明名称空间 std;
可以结合使用 cout 和运算符 << 来显示各种类型的数据可结合使用 ofstream 对象和运算符 << 来输出各种类型 数据

总结

  1. 包含头文件 fstream
  2. 创建一个 ostream 对象
  3. 将该 ofstream 对象同一个文件联系起来
  4. 就像使用 cout 那样使用该 ofstream 对象

示例输出

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
   ofstream outFile ;
   outFile.open("carinfo.txt") ; //使用方法open()将该对象特定文件关联
   cout << "hello world" <<endl ;
   outFile << "hello world " << endl ;
   outFile.close() ;
   return 0 ;
}

运行结果:
控制台输出: hello world
程序路径下生成 carinfo.txt,文件内容为 hello world

备注:
如果上述方式,carinfo.txt 本身存在,且文件有内容。则运行上述程序时,默认情况下,open() 将首先截断该文件,即将其长度截断到零-----丢弃其原有的内容,然后将新的输出加入到该文件中。

读取文本文件

cin 用于控制台输入

cin文本输入
必须包含头文件 iostream必须包含头文件 fstream
头文件 iostream 声明了一个名为 cin 的 istream 变量(对象)需要声明一个或多个 ifstream 变量(对象),并以自己喜欢的方式对其命名
必须指明名称空间 std ;必须指明名称空间 std;
可以结合使用 cin 和运算符 >> 来读取各种类型的数据可结合使用 ifstream 对象和运算符 >> 来读取各种类型的数据
可以使用 cin 和 get() 方法来读取一个字符,使用 cin 和 getline() 来读取一行字符可以使用 ifstream和 get() 方法来读取一个字符,使用 ifstream 和 getline() 来读取一行字符
可以结合使用 cin 和 eof()、fail() 方法来判断输入是否成功可以结合使用 ifstream 和 eof()、fail() 方法来判断输入是否成功
对象 cin 本身被用作测试条件时,如果最后一个读取操作成功,它将被转换为布尔值 true,否则被转换为 false对象 ifstream 本身被用作测试条件时,如果最后一个读取操作成功,它将被转换为布尔值 true,否则被转换为 false

检查文件是否被成功打开至关重要

  1. 指定文件可能不存在
  2. 文件可能位于另一个目录中
  3. 访问可能被拒绝
  4. 用户可能输错了文件名或省略了文件扩展名

文件读取循环的正确设计至关重要

  1. 程序读取文件时,不应超过 EOF
  2. 程序可能遇到不匹配的情况
  3. 可能出现意外的问题,文件受损或硬件故障
    备注: 不需要分开处理,更简单的方法是使用 good()方法
//表达式 inFile >> value 的结果为inFile,
//而在需要一个 bool 值的情况下, inFile 的结果为 inFile.good(),即为true 或 false
//所以文件读取循环可以直接如下这样
while (inFile >> value)
{
   
}
对象和类

面向对象编程(OOP)特性:

  1. 抽象
  2. 封装和数据隐藏
  3. 多态
  4. 继承
  5. 代码的可重用性
封装
类会提供
1.默认构造函数(无参构造函数)
2.析构函数,释放在堆区申请空间的数据成员的指针
3.赋值操作符函数
4.拷贝构造函数(浅拷贝),对象中数据成员进行值赋值
特点1:当类中写了有参构造函数,编译器不会再提供默认构造函数,但会提供拷贝构造函数;
特点2:当类中写了拷贝构造函数,编译器不会再提供其他构造函数(无参构造和有参构造函数,普通构造函数)

class Empty();

//也就是说,一个空类等同于你写了下面的所有,只是默认提供的
class Empty{
public:
	Empty() {...}                     //default构造函数
	Empty(const Empty &rhs) {...}     //copy构造函数
	~Empty() {...}                    //析构函数
	Empty& operator=(cosnt Empty& rhs) {...}  //copy assignment操作符
};

只有当这些函数需要被调用时,它们才会被编译出来。

注意

  • 当 class 中包含 const 或 reference(引用类型) 成员时,编译器拒绝生成 copy assignment 操作符。
  • 当基类的 copy assignment 操作符声明为 private,编译器将拒绝为其派生类生成一个 copy assignment 操作符。
多态

如果我们希望仅仅通过基类指针就能操作它所有的自雷对象,那就是多态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值