您的位置:首页 > 编程语言 > C语言/C++

C++基础总结

2016-06-11 19:36 323 查看
命名空间
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  入门