一.面向对象
1.1 类
C++使用Struct.class 来定义一个类:
struct的默认成员权限为public
class的默认成员权限是private
class Student{
private:
string name;
double score;
public :
Student();
virtual ~Student(); // 析构函数
double GetScore(){
return score;
}
//运算符重载
Student operator+(const Student& x){
Student s;
s.score = score+x.score;
return s;
}
}
二.前置与后置操作符
//前置
Complex &operator++(){
_real++;
_image++;
return *this;
}
//后置
Complex operator++(int){
Complex tmp(*this);
_real++;
_image++;
return tmp;
}
三.标准输入输出IO重载
//友元函数friend
ostream &operator<<(ostream& os, const Complex &x){
os<< x._real<<x._image<<endl;
return os;
}
istream &operator<<(istream& is, Complex &x){
is>> x._real>>x._image;
return is;
}
四.I/O流基础
4.1 i/o流类结构图
4.2 I/O缓存区
1.按块缓存:如文件系统
2.按行缓存 : \n
3.不缓存
int a;
int index = 0;
while(cin>>a){
cout<<a;
index++;
if(index==5)
break;
}
//通过该方法将缓存区的数据给清除将1024个缓存区脏数据,以\n为结尾
cin.ignore(1024,"\n");
char ch;
cin>>ch;
五.文件操作基础
//输出文件的操作
//1.创建文件流
fstream fout;
//2.打开文件,在文件尾部添加数据,ios::trunc文件存在则清除文件原有的内容
fout.open("xx.txt",ios::app)
//3.判断文件是否读取成功
if(fout.fail())
//4.使用文件流
fout<<"input a number"<<endl;
//5.关闭文件流
fout.close()
//读取文件操作,
//1.创建文件流
ifstream in(str.c_str(),ios::in | ios::binary)
//2.打开文件,string类转为char数组类型,ios::in读入方式,ios::binary 以二进制方式读取
in.open(str.c_str(),ios::in | ios::binary)
//3.判断是否读取成功
if(in.fail())
//4.判断是否读取到eof结束位置
char temp[max]
while(!in.eof()){
//temp读取到的文件缓存数组,bufferlen最多读取
in.read(temp,bufferlen)
}
//5.关闭输入流
in.close()
六.深拷贝.浅拷贝.写时复制
浅拷贝:只拷贝指针地址,c++默认拷贝构造函数与赋值运算符重载都是浅拷贝
深拷贝:重新分配堆内存,拷贝指针指向内容