//一个类
class Class_one
{
int num;
char name[20];
void display()
{....}
};
Class_one stu1,studh2;
//指定访问属性(默认为私有)
class Ex_class
{
private:
int sum;
public:
char a[];
};
//类外定义函数
void Ex_class::display()
{....}
//定义内置函数,类内默认为内置函数
inline void display();
//访问对象内的成员
stu1.display();
stu1.num;
Class_one *p;
p=&stu1;
p->num;
//默认参数,声明时使用,定义时不必
void set(Class_one&,int a=1;int b=2);
//类的初始化
class Ex_class
{
a;
b;
};
Ex_class one{1,2};//公有时才能用
class Ex_class
{
Ex_class()//构造函数
{
a=b=0;
}
};
class Ex_class
{
Ex_class();
};
Ex_class::Ex_class()//类外定义,无类型,无法被用户调用
{
a=b=0;
}
class Ex_class
{
Ex_class(int,int);
};
Ex_class::Ex_class(int m,int n)//带参数的构造函数
{
a=m,b=n;
}
Ex_class one(1,2);
Ex_class(int n,int m,nam[]):a(n),b(m)//初始化表
{
strcpy(name,nam);
}
Ex_class one(1,2,"oo");
//析构函数
class Ex_class
{
~Ex_class()
{....}
};
//对象数组
Ex_class sum[3]={1,2,3}//每个对象只有一个参数
Ex_class sum[3]={
Ex_class(1,2);
Ex_class(1,2);
Ex_class(1,2);
};
//定义一个指向公用成员函数的指针
void Ex_class::*(p2());
p2=&Ex_class::display();
//常对象、常数据、常成员函数、指向对象的常指针、指向常变量的常指针、指向常对象的指针
const Ex_class stu1;
const int a;
void display()const;
Ex_class*const p;
const int *p;
const Ex_class *p;
//使得const成员函数可以修改
mutable int count;
//对象的引用(虚实结合,能修改实参)、常引用
void display(Ex_class &t); void display(const Ex_class &t);
//对象的动态建立和释放
new Box;
Box *pt=new Box(1,2);
delete pt;
//对象的赋值与复制
Ex_class stu1,stu2;
stu1=stu2;
Box box2(box1);//调用复制构造函数
Box box2=box1;
//静态数据成员:可以初始化,但只能在类外;程序结束时释放空间
static int a;
//静态成员函数
static int display();
Ex_class::display();//类外调用必须带::没有this指针
//友元函数:能直接调用类里的私有函数(可以是其他类的成员函数)
class Ex_class
{
friend void display(Ex_class&);
};
void display(Ex_class oneclass)
{
}
//友元类,在类A里定义使得B的成员函数都是A的成员函数
friend B;
//类模板
template <class numtype>//定义一个模板虚拟类型名为numtype
class Compare
{
compare(numtype a,numtype b)
{....}
numtype m()
{....};//如果在类外定义:numtype Compare<numtype>::m();
};
compare<int> cmpl(3,4);
template <class numtype,class numtype2>//可定义多个
class someclass
{....}
someclass<int,double> obj;
//运算符重载
Ex_class operator+(Ex_class &c1,Ex_class &c2)//类内定义
{...}
Ex_class Ex_class::operator+(Ex_class &c1,Ex_class &c2)//类外定义
{...}
friend Ex_class operator+(Ex_class &c1,Ex_class &c2);//作为友元函数声明
Ex_class operator+(Ex_class &c1,Ex_class &c2)//作为友元函数定义
{...}
//<<,>>运算符的重载
istream&operator>>(istream&,oneclass&)
{
input>>p.x>>p.y;
return input;
}
ostream&operator<<(ostream&,oneclass&)
{
output<<"("<<p.x<<")";
return output;
}
//转换构造函数,只有一个参数
Teacher(Student& s){num=s.num;strcpy(name,s.name);}
//类型转换函数
operator double()
{return real;}//类中定义,自动完成转换
d1=d2+c1;
//继承与派生
class Student1:public Student
{....};
Student1(int n,string name,int n1,string name2,int a,string bn):
Student(n,name),monitor(na,name2)//派生类的构造函数
//虚基类
class B:virtual public A
{....};
//虚函数:使得派生类能调用基类的函数
virtual void display();
//纯虚函数
virtual float ab() const=0;
//输入输出流
cout.put('i');//cout.put('i').put('i').put('i')
cin.get();
cin.getline(ch,20,'/');//读入19个字符后面加上'\0'做结尾,遇到'/'结束
//文件流
#include<fstream>
ofstream outfile;
outfile.open("f1.dat",ios::out);//向磁盘文件输出数据
outfile.close();
//ascii读写
#include<fstream>
ofstream outfile("f1.dat",ios::out);
ifstream infile(filename,ios::in|ios::nocreate);
infile.close();
//二进制文件读写
#include<fstream>
ofstream outfile("f1.dat",ios::binary);
outfile.write((char*)&stud[i],sizeof(stud[i]));
outfile.close();
//字符串流对象
#include<strstream>
ostrstream strout(c,30);//建立输出字符串流,与c关联,缓冲区长30
strout<<"hjyu";
strout<<ends//插入一个’\0'
istrstream strin(c,sizeof(c));
strin>>a[i];//字符串流不需要打开关闭文件
C++常用操作
最新推荐文章于 2023-05-17 19:49:45 发布