c++总结Word格式文档下载.docx

上传人:b****3 文档编号:7381348 上传时间:2023-05-08 格式:DOCX 页数:17 大小:31.70KB
下载 相关 举报
c++总结Word格式文档下载.docx_第1页
第1页 / 共17页
c++总结Word格式文档下载.docx_第2页
第2页 / 共17页
c++总结Word格式文档下载.docx_第3页
第3页 / 共17页
c++总结Word格式文档下载.docx_第4页
第4页 / 共17页
c++总结Word格式文档下载.docx_第5页
第5页 / 共17页
c++总结Word格式文档下载.docx_第6页
第6页 / 共17页
c++总结Word格式文档下载.docx_第7页
第7页 / 共17页
c++总结Word格式文档下载.docx_第8页
第8页 / 共17页
c++总结Word格式文档下载.docx_第9页
第9页 / 共17页
c++总结Word格式文档下载.docx_第10页
第10页 / 共17页
c++总结Word格式文档下载.docx_第11页
第11页 / 共17页
c++总结Word格式文档下载.docx_第12页
第12页 / 共17页
c++总结Word格式文档下载.docx_第13页
第13页 / 共17页
c++总结Word格式文档下载.docx_第14页
第14页 / 共17页
c++总结Word格式文档下载.docx_第15页
第15页 / 共17页
c++总结Word格式文档下载.docx_第16页
第16页 / 共17页
c++总结Word格式文档下载.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c++总结Word格式文档下载.docx

《c++总结Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c++总结Word格式文档下载.docx(17页珍藏版)》请在冰点文库上搜索。

c++总结Word格式文档下载.docx

:

构造函数名(【参数表】)

【:

成员初始化表】{【构造函数体】}

一般要分别声明有参和无参的构造函数,以避免在定义对象时没有赋值电脑报错。

Classtime

{

public:

time(){hour=0;

minute=0;

sec=0;

}

time(inth,intm,ints):

hour(h),minute(m),sec(s){}

private:

inthour;

intminute;

intsec;

}s,w(2,19,4);

2.如想使用参数默认值,则应在声明构造函数时指定默认值,而不能只在定义构造函数时指定默认值。

3.析构函数不返回任何值,没有函数类型,也没有函数参数,不能被重载。

(一个类可以有多个枸造函数,但只能有一个析构函数);

一般情况下,调用析构函数的次序与调用构造函数的次序相反。

4.

(1)指向对象数据成员的指针:

数据类型名*指针变量名;

例:

p1=&

t1.hour;

cout<

*p1<

endl;

(2)指向对象公用成员函数的指针变量的一般形式:

数据类型名(类名:

*指针变量名)(参数表列);

使指针变量指向一个公用成员函数的一般形式为:

指针变量名=&

类名:

成员函数名;

void(time:

*p2)();

P2=&

time:

get_time;

(3)指向普通函数的指针变量的形式:

类型名(*指针变量名)(参数表列);

void(*p)();

P=fun;

(*p)();

5.this指针:

指向本类对象的指针,它的值是当前被调用的成员函数所在的对象的起始地址

例:

本来,成员函数的定义是:

intBox:

volume()

{return(height*width*length);

C++把它处理为:

intBox:

volume(Box*this)

{return(this->

height*this->

width*this->

length);

6.定义常对象的一般形式:

类名const对象名【(实参表)】;

或const类名对象名【(实参表)】;

例:

consttimet1(12,34,46);

(1)在定义常对象时,构造函数只能通过参数表对常数据成员初始化,之后不能再改变;

如果一个对象被声明为常对象,则它只能访问常成员函数,而不能调用该对象的普通成员函数。

(2)常成员函数可以访问常对象中的数据成员,但仍不允许修改常对象中数据成员的值。

7.常成员函数:

类型名函数名(参数表)const

voidget_time()const;

(常成员函数可以引用const数据成员,也可以引用非const的数据成员;

const数据成员可以被const成员函数引用,也可以被非const的成员函数使用;

常成员函数不能调用另一个非const成员函数)

8.

(1)指向对象的常指针变量的一般形式为:

类名*const指针变量名;

Timet1(10,12,15),t2;

Time*constp1;

P1=&

t1;

t2;

(非法,p1不能改变指向)

(2)指向常对象的指针变量的一般形式:

const类名*指针变量名;

constTimet1(10,12,15);

ConstTime*p2;

Time*p1;

(非法,因为p1不是指向常对象的指针变量)

《指向const的指针能访问非const变量地址,指向非const的指针不能访问const变量地址》

9.用new运算符动态建立对象:

newBox;

用运算符delete撤销对象:

deleteBox;

10.对象赋值的一般形式:

对象名1=对象名2;

(对象名1,2必须为同一个类)

11.对象的复制的一般形式:

类名对象2(对象1);

或类名对象名1=对象名2;

但建立对象时需调用一个特殊的构造函数----复制构造函数(也是构造函数,但是只有一个参数(即本类的对象)),形式为:

Box:

Box(Box&

b)

height=b.height;

width=b.width;

Length=b.length;

}

12.静态数据成员(各对象中的数据成员的值一样)

初始化的一般形式:

数据类型类名:

静态数据成员名=初值;

(只在类体中声明时加static,不必在初始化语句中加static;

静态数据成员既可以通过对象名引用,也可以通过类名引用;

公用的成员函数既可以引用静态成员也可以引用一般数据成员;

只用静态成员函数引用静态数据成员,而不引用非静态数据成员

13.友元

(1)将普通函数声明为友元函数:

classtime{public:

Time(int,int,int);

Friendvoiddisplay(time&

);

private:

inthour;

intsec;

};

voiddisplay(time&

t)

{cout<

t.hour<

t.minute<

t.sec<

endl}

(2)友元成员函数

classdate;

//对date类的提前引用声明

classtime

public:

time(int,int,int);

voiddisplay(date&

//private:

classdate

date(int,int,int);

friendvoidtime:

display(date&

//声明time中display函数为本类的友元成员函数

intmonth;

intday;

intyear;

};

(3)友元类(如果B类是A类的友元类,友元类B中的所有函数都是A类的友元函数,可以访问A类中所有成员)

友元的关系是单向的而不是双向的,友元的关系不能传递!

14.类模板

#include<

iostream>

usingnamespacestd;

template<

classnumtype>

classcompare

{

public:

compare(numtypea,numtypeb)

{x=a;

y=b;

numtypemax()

{returnx>

y?

x:

y;

numtypex,y;

intmain()

compare<

int>

cmp1(3,7);

cmp.max()<

return0;

第10章:

运算符重载

1.重载运算符的函数一般形式如下:

函数类型operator运算符名称(形参表)

{对运算符的重载处理}

complexoperator+(complex&

c1,complex&

c2);

调用时:

c5=c3+c4;

(即c1.operator+(c2))

2.重载运算符的规则:

(1)c++不允许用户自己定义新的运算符,只能对已有的c++运算符进行重载

(2)c++不能重载的运算符只有五个:

.*:

sizeof?

(3)重载不能改变运算符运算对象的个数;

优先级;

结合性

(4)重载运算符的函数不能有默认的参数

(5)重载运算符必须和用户定义的自定义类型的对象使用,其参数至少应有一个是类对象。

(6)用于类对象的运算符一般必须重载,但有两个例外,运算符“=”和“&

3.

(1)c++规定,赋值运算符“=”、“下标运算符【】”、“函数调用运算符()”、成员运算符“->

”必须作为成员函数重载。

(2)流插入运算符“<

”和流提取运算符“>

>

”、类型转换运算符函数只能作为友元函数。

(3)一般将单目运算符和复合运算符(+=,-=,/=,*=,&

=,!

=,^=,%=,>

=,<

=)重载为友元函数。

(4)一般将双目运算符重载为友元函数。

重载运算符“<

Usingnamespacestd;

classcomplex

Complex(intr=0;

inti=0);

ostream&

operator<

(ostream&

complex&

intreal;

intimag;

complex:

complex(intr,inti)

real=r;

imag=i;

ostream&

(ostream&

output,complex&

a)

output<

a.real<

””<

a.imag<

complexc1(2,4);

c1;

//系统解释为operator<

(cout,c1)

第11章:

继承与派生

1.类的继承(公用继承,私有继承,保护继承):

一个新类从已有的类那里获得其已有属性。

(构造函数和析构函数不能从基类继承)

2.声明派生类的一般形式为:

class派生类名:

【继承方式】基类名

派生类新增的成员;

3.公用继承:

基类的公有成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。

私有继承:

基类的私有成员和保护成员在派生类中成为私有成员。

其私有成员仍为基类私有。

保护继承:

基类的公有成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有。

(保护成员的意思是,不能被外界引用,但可以被派生类的成员引用)

4.多级派生:

A->

B->

C若类A是类B的直接基类,是类C的间接基类。

5.派生类构造函数一般形式:

派生类构造函数名(总参数表):

基类构造函数名(参数表){派生类新增数据成员初始化语句}

--------这里的参数指的是形参

6.若有子对象,则派生类构造函数的一般形式:

基类构造函数名(参数表),子对象名(参数表){派生类新增数据成员初始化语句}

7.多重继承:

classD:

publicA,privateB,protectedC

{类D新增加的成员}

派生类构造函数名(总参数表):

基类1构造函数(参数表),基类2构造函数(参数表),基类3构造函数(参数表列){新增成员初始化语句}

8.虚基类:

在继承间接共同基类时只保留一份成员

声明虚基类的一般形式:

class派生类名:

virtual继承方式基类名

第12章:

多态性与虚函数

1.多态性:

向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为。

包括静态多态性和动态多态性。

其表现形式之一:

具有不同功能的函数可以用同一个函数名,这样就可以实现用同一个函数名调用不同内容的函数。

2.虚函数的作用:

允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类的同名函数。

3.在基类用virtual声明成员函数为虚函数;

当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为虚函数。

(构造函数不能声明为虚函数)

4.声明纯虚函数的一般形式:

Virtual函数类型函数名(参数表列)=0;

virtualfloatarea()=0;

注意:

虚函数没有函数体,“=0”只是形式,并非返回值为0。

多态性举例:

string>

usingnamespacestd;

classstudent

student(int,string,float);

virtualvoiddisplay();

protected:

intnum;

stringname;

floatscore;

classgraduate:

publicstudent

graduate(int,string,float,float);

voiddisplay();

floatwage;

student:

student(intn,stringnam,floats)

num=n;

name=nam;

score=s;

voidstudent:

display()

num<

name<

”“<

score<

graduate:

graduate(intn,stringnam,floats,floatw):

student(n,nam,s),wage(w){}

voidgraduate:

display()

Cout<

wage<

Intmain()

Studentstud1(1001,”li”,87.5);

Graduategra1(2001,”wang”,1200);

Student*pt=&

stud1;

Pt->

display();

Pt=&

grad1;

Return0;

第13章:

输入输出流

1.c语言采用函数实现输入输出(如scanf和printf函数),c++采用类对象来实现输入输出(如cin,cout)。

2.C++流库有两个基类:

ios类(是输入输出操作在用户的接口,为用户的输入输出提供服务)和streambuf类(处理“流缓冲区”的类,包括缓冲区起始地址,读写指针,和对缓冲区的读写操作),所有其他流类都是从他们直接或间接派生出来的。

3.

类名

作用

在哪个头文件中声明

ios

抽象基类

iostream

istream

ostream

通用输入流和其他输入流的基类

通用输出流和其他输出流的基类

通用输入输出流和其他输入输出流的基类

ifstream

ofstream

fstream

输入文件流类

输出文件流类

输入输出文件流类

istrstream

ostrstream

strstream,

输入字符串流类

输出字符串流类

输入输出字符串类

strstream

4.cerr,clog均为向输出设备输出出错信息,但cerr是不经过缓冲区直接向显示器输出信息,而clog中的信息存放在缓冲区,缓冲区满后或遇endl时向显示器输出。

5.用流成员函数put输出字符:

cout.put(‘a’);

6.输入流

1)用get函数读入一个字符

无参cin.get();

有一个参数cin.get(ch);

有三个参数cin.get(字符数组(或字符指针),字符个数n,终止字符);

2)用成员函数getline函数读入一行字符

Cin.getline(字符数组(或字符指针),字符个数n,终止标志字符)

cin.getline(ch,20,’/’);

7.istream类的其他成员函数

1)eof函数:

表示文件结束。

从输入流读取数据,如果到达文件末尾,eof函数值为非0值,否则为0。

2)peek函数:

观测下一个字符调用时:

c=cin.peek();

其返回值是指针指向的当前字符,但它只是观测,指针仍停留在当前位置,并不后移。

3)putback函数:

调用形式为:

cin.putback(ch);

其作用是将前面用get或getline函数从输入流中读取的字符ch返回到输入流,插入到当前指针位置,以供后面读取。

4)ignore函数,调用形式为cin,ignore(n,终止字符),作用是跳过输入流n个字符或遇到指定的终止字符时提前结束。

charc[20];

intch;

"

pleaseenterasentence:

cin.getline(c,15,'

/'

thefirstpartis:

c<

ch=cin.peek();

thenextcharacteris:

ch<

cin.putback(c[0]);

thesecondpsrtis:

}

8.文件:

包括程序文件和数据文件两大类。

根据其组织形式分为:

ASC||文件和二进制文件。

9.

(1)打开磁盘文件

~~~~调用成员函数的一般形式:

文件流对象.open(磁盘文件名,输入输出方式);

ofstreamoutfile;

outfile.open(“f1.dat”,ios:

out);

(2)关闭磁盘文件

outfile.close();

10.ASC||文件:

如果文件中的每一个字节中均以ASC||代码形式存放数据,即一个字节存放一个字符。

对其读写操作可以用两种方法:

......................用流插入运算符<

和流提取运算符>

输入输出标准类型数据。

......................用put,get,getline等成员函数进行字符的输入输出。

11.对二进制文件的读写操作

读:

istream&

read(char*buffer,intlen);

写:

ostream&

write(constchar*buffer,intlen);

(字符指针buffer指向内存中一段存储空间;

len是读写的字节数)

12.字符串流:

以内存中用户定义的字符数组(字符串)为输入输出的对象

1)建立输出字符串流

Ostream类提供的构造函数原型为

Ostream:

ostream(char*buffer,intn,intmode=ios:

out)

(字符指针buffer指向内存中一段存储空间,n为指定的流缓冲区的大小,第三个参数是可选的)

2)建立输入字符串流

Istrstream类提供的构造函数原型为

Istrstream:

istrstream(char*buffer);

Istrstream:

istrstream(char*buffer,intn);

3)建立输入输出流对象

Strstream:

strstream(char*buffer,intn,intmode);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 日语学习

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2