C++基础总结
2016-06-11 19:36
323 查看
命名空间
引用
函数重载
内存申请和释放,new和delete
标准输入输出
文件操作
文本读写
二进制数据读写
定位读写
面向对象
类文件组织
.h文件中声明,同名.cpp文件中实现
类
运算符重载
C++中的运算符除了?: . .* :: sizeof 之外都可以重载
继承,多态,虚函数
异常处理
模版,类似于Java的泛型
函数模版
函数使用
类模版
STL标准模板块
容器
list
set
map
string
using namespace std;基本数据类型:
char,int,long,float,double,bool,struct;
引用
void f(int&i)//引用 { i++;//会改变原参 }
函数重载
float f(float&i)//引用,参数不同就是不同的函数 { i+=1; }
内存申请和释放,new和delete
int *ip; ip=new int(100); if(ip==NULL) { cout<<"内存分配失败"; exit(0);//需要#include<stdlib.h> } *ip=9; ip[1]=0; cout<<*ip<<*(ip+1)<<ip[2]; delete []ip;
标准输入输出
#include<iostream>//标准IO流 #include<iomanip>//输出格式 cin >> i; cin.getline(str,11); cout <<setw(5)<<i<<endl;//占5格 cout <<setprecision(2)<<i<<endl;//设置浮点数总位数 cout <<setiosflags(ios::left)<<i<<endl;//对齐方式,还有right cout <<setiosflags(ios::hex)<<i<<endl;//16进制输出,十进制dec,八进制oct,科学计算数scientific,其他还有,showpoint显示尾部的0,showpos显示正负符号等模式参数 cout.width(2)<<endl; cout<<i<<endl; cout <<"操蛋!" <<endl;
文件操作
#include<fstream>//文件 fstream dataFile;//这些都是对象传参时用引用。 ifstream inputFile; ofstream outputFile; //打开文件 dataFile("q.txt",ios::in|ios::out);//定义时打开,没有文件时不会新建 dataFile.open("q.txt",ios::in|ios::out);//binary二进制模式 outputFile("q.txt",ios::app);//追加模式 if(!dataFile)//dataFile.fail()//是否打开成功 { cout<< "打开失败"; exit(0);//#include<stdlib.h> }
文本读写
dataFile>>i;//这样会略过空格,换行! cout<<i; dataFile.get(ch);//读一个字符 dataFile.getline(str,11,'\n');//给谁,大小,分隔符 dataFile << "123"<<endl; dataFile.put(ch);//写一个字符 dataFile.flush();//写入所有缓存,函数中用,文件还不能关闭,但是要写入 dataFile.close();
二进制数据读写
dataFile.write((char*)buffer,sizeof(buffer));//把buffer数据写入 //buffer是如果结构体要用&引用 dataFile.read((char*)buffer,sizeof(buffer));//读取数据到buffer
定位读写
//确定位置 dataFile.tellg()//读位置 dataFile.tellp()//写位置 //文件结尾判断 dataFile.eof() //位置跳转 dataFile.seekg(10L,ios::beg);//读位置(写位置用seekp),开始位置向后10个字符,其他位置,ios::end结尾,ios::cur当前
面向对象
类文件组织
.h文件中声明,同名.cpp文件中实现
#ifndef //宏名 #define //宏名 class{} //类的实现写在同名.cpp文件 #endif
类
<span style="font-family:YaHei Consolas Hybrid;">class fuck { fuck(); ~fuck(){}//内联的析构函数(简单的函数可以写在类的内部),一个类只有一个析构函数 public: int i; static int a;//静态数据成员,必须要在外部定义 fuck(const fuck &obj){};//拷贝构造函数,参数为不可变的源对象引用,c++中定义初始化对象fuck fuck1=fuck2;这时会复制对象,非定义时fuck1=fuck2;需要重载= void static test(); friend void otherFuck::test();//友元函数申明,别的类的成员,需要在otherFuck中设置friend class fuck; }; int fuck::a=123;//静态成员需要在类外定义!! void fuck::test(){}//静态成员函数只能访问静态成员变量,调用方法类名fuck::test(); fuck::fuck()//构造函数 { i=100;//如果类成员数据和构造函数参数同名需要加this->i=100,这里没有参数i } //fuck you;</span> <span style="font-family: 'YaHei Consolas Hybrid'; font-size: 16.1905px; line-height: 22.8571px; widows: auto;">fuck you(); //fuck you=fuck(); </span><pre name="code" class="cpp" style="font-size: 16.1905px; line-height: 22.8571px; font-family: 'YaHei Consolas Hybrid';">cout<<you.i; fuck *you=new fuck(); fuck me=*you; fuck &he=me;cout<<he.i;
运算符重载
C++中的运算符除了?: . .* :: sizeof 之外都可以重载
fuck fuck::operator=(const fuck &right) {i=right.i;//right,=右边对象 return *this;//返回当前对象,this指向当前对象指针 } fuck fuck::operator+(const fuck &right) {//fuck3=fuck1+fuck2;//实际等于fuck3=fuck1.operator+(fuck2); fuck t; t.i=i+right.i; return t; } fuck fuck::operator ++ (int)//有参数确定是后置,返回变化前的,i++ { fuck t; t.i=i;//保存原来的,如果是前置的++i,不用缓存 i++; return t; } fuck fuck::operator > (const fuck &right) { if(i>right.i) return true; else return false; } //cin,cout重载,通过友元函数的方式实现 ostream &operator << (ostream &strm,const fuck &obj)//cout { strm << obj.i; return strm; } istream &operator >> (istream &strm,const fuck &obj)//cin { cout << "输入i:" strm >> obj.i; return strm; } //重载转换运算符 fuck::operator float() { return 0; } //重载[] int &fuck:: operator [](const int &sub)//int { if(sub<0): subError(); return i; }
继承,多态,虚函数
class newFuck:fuck,fuckfuck//父类的protected修饰的成员会变为之类的private成员 //多继承 用,隔开要继承的父类 { newFuck():fuck()//调用父类构造函数 { fuck::test();//调用父类方法 } //父类中的函数用virtual修饰为虚函数,动态绑定,使得父类可以调用被子类覆盖的方法。 //virtual void test1()=0;抽象类中的纯虚函数,类似于java中的接口 } fuck *pf;//基类指针 newFuck nf; pf=&nf;//pf->test()调用基类方法
异常处理
try{throw name}//catch(exception name){} catch(char* exceptionString){cout<<exceptionString}
模版,类似于Java的泛型
函数模版
template <class T> T test2(t num) { return num; }
函数使用
int y,x=1; y=test(x);//编译器根据实际的参数自动生成合适的实际函数
类模版
tmeplate<class T> class fuckT { T i; fuckT(); } fuckT<T>::fuckT(){i=1;}
STL标准模板块
容器
list
set
map
string
<span style="font-family:YaHei Consolas Hybrid;">#include<string> string str="嘿嘿嘿";</span> <span style="font-family: Arial, Helvetica, sans-serif; font-size: 16.1905px; line-height: 22.8571px;">dataFile.tellg()//读位置</span>
相关文章推荐
- PostgreSQL新手入门教程
- Ajax PHP简单入门教程代码
- MySQL入门教程(七)之视图
- Nodejs学习笔记之入门篇
- javascript每日必学之基础入门
- React.js入门学习第一篇
- Bootstrap入门书籍之(五)导航条、分页导航
- Bootstrap入门书籍之(三)栅格系统
- Bootstrap入门书籍之(一)排版
- jQuery入门 构造函数
- jQuery EasyUI 入门必看
- jQuery入门介绍之基础知识
- 针对初学者的jQuery入门指南
- jquery 指南/入门基础
- JDBCTM 指南:入门
- struts2入门Demo示例
- JSP入门教程(4)
- JSP入门教程(3)
- C#语言初级入门介绍
- JSP入门教程(1)