友元docWord文件下载.docx

上传人:b****6 文档编号:21155392 上传时间:2023-01-28 格式:DOCX 页数:7 大小:17.78KB
下载 相关 举报
友元docWord文件下载.docx_第1页
第1页 / 共7页
友元docWord文件下载.docx_第2页
第2页 / 共7页
友元docWord文件下载.docx_第3页
第3页 / 共7页
友元docWord文件下载.docx_第4页
第4页 / 共7页
友元docWord文件下载.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

友元docWord文件下载.docx

《友元docWord文件下载.docx》由会员分享,可在线阅读,更多相关《友元docWord文件下载.docx(7页珍藏版)》请在冰豆网上搜索。

友元docWord文件下载.docx

名空间:

匿名空间:

只在当前文件可访。

不同的名空间划定了不同的作用域

1、打开名空间:

usingnamespacestd;

(避免在头文件中直接打开)

2、打开指定名称:

Usingstd:

:

cout;

打开名空间的cout

endl;

打开名空间中的endl

3、直接指定具体空间的标识符(头文件中使用):

std:

stringname;

Std:

iostreamname;

Const不变、不能被修改;

修饰对象(初始化后不变,只读不写)或成员函数(不改变数据的成员);

Const对整个对象只读不写

常用成员只能常调用常用函数

类名const对象名(参数);

Const类名对象名(参数);

Operate+已声明为complex类的友元函数

杜绝a+b=c

ConstComplexoperator+(constcomplex&

c1,constcomplex&

c2){}

Const区分重载,const成员函数不改变对象的成员数据

当const和&

一起使用时,作用不同const------不变

&

---------不是副本,返回的是引用

Int&

--------返回的是引用

Int————返回的是副本int的值

&

返回保证其元素本身

Const返回保证其元素不变

2011-4-20

Viod*————指向不确定类型

Typedefintstatus;

(定义一个*****)

(*fun)(x1,x2)——函数指针

Typedef函数名(*)(x1,x2)记为pfun

等价于函数名(*pfun)(x1,x2)

Ssort()

返回值的形式——返回值是void无法实现++a的形式

Point形式的可返回变化了的a;

指针常量:

声名必须初始化;

初始化后不能修改

可以修改指向的变量的值

关键:

不能通过指针改变所指对象的值(可以是变量),但指针本身可以改变,可以指向另外的对象。

Constinta=10;

Constint*ptr;

P=&

a;

//对

*p=20//错

Intb=50;

b;

*p=60;

//错

This指针式指针常量,不允许被修改,只能修改其指向的对象

//Const修饰成员变量,实际上限定了

NewT与newT()区别

Int*ptr=newint;

//未初始化

Int*ptr=newint();

//初始化为0

Int*ptr=newint(10);

//初始化为10

Point*ptr=newpoint[];

Point*ptr=mewpoint[10]();

//对所有成员按照newT()初始化;

拷贝:

深拷贝和浅拷贝

深拷贝:

写构造函数。

整个函数,和复制之前一模一样

浅拷贝:

首地址

ArrayOfPoints.h声明函数

ArrayOfPoints(intsize=10);

析构函数:

~ArrayOfPoints();

拷贝构造ArrayOfPoints(constArrayOfPoints&

array);

ArrayOfPoints.cpp定义函数

ArrayOfPoints:

ArrayOfPoints(intsize/*=10*/){}

析构函数ArrayOfPoints:

~ArrayOfPoints(){}

拷贝构造ArrayOfPoints:

ArrayOfPoints(constArrayOfPoints&

array)

size(array.size){}

数据的对考,重新开空间:

Size=array.size;

Points[i]=newpoint[size];

For(inti=0;

i<

size;

i++){

point[i]=array.point[i];

String类:

Typedefbasic_string<

char>

string;

Strings;

——空串

Strings(str);

——拷贝构造

Strings(str,1);

——生成由str的位置1开始的字符串

strings(str,1,3);

——生成由str的位置1开始的长度为3的字符串

strings(“abc”);

strings(“abcdef”,4);

——s=“abcd”

strings(5,‘x’);

g(,);

——s=“xxxxx”

strings(beg,end);

——由迭代器区间(beg,end)内的字符生成

常用操作符:

Getline整行输入(第三参数为分隔符)

 

Cpp_07:

继承与派生:

1、继承方式与基类成员的访问控制

2、派生类的构造与析构

3、赋值兼容原则

4、派生类作用域与同名隐藏

5、多继承与虚基类

派生类(子类)继承基类(父类)

——全盘吸收(构造、析构除外)

——改造(重写基类相关的函数)

——新添()

派生类的定义:

Class派生类名:

继承方式/*public、private、protected*/基类名

{新增成员的声明};

默认缺省继承方式是private

1、继承方式与基类成员的访问控制属性

基类private对于一切继承方式都不可访问

基类protected对于继承方式为public为protected

其他的继承方式相一致

基类为public对于一切继承方式和基类相一致

派生类成员与基类成员重名时,隐藏基类的同名成员(同名隐藏,调用新增函数或成员)

引用基类成员时,加类名限定。

派生类内能通过派生类的对象访问基类的protected成员

而不能通过基类的对象访问

要通过对象访问private或protected成员只有在类内

派生类的构造函数:

先初始化基类成员,再初始化派生类的成员

基类成员的初始化由基类的构造函数负责

基类成员的初始化由初始化列表完成

定义:

派生类名(形参列表):

基类名(参数),新增成员名1(参数),新增成员2(参数)

{派生类构造函数体}

执行顺序:

按继承时声明的顺序,调用基类构造函数

按成员声明的顺序,调用新增成员的构造函数

执行构造函数的代码体

构造函数的声明:

类名:

调用的函数(参数),调用的函数(参数){函数内容};

复制兼容规则:

原则:

先拷贝基类部分,再拷贝派生类新增成员

基类部分的拷贝根据赋值兼容原则,直接传派生类的对象

Circle:

Circle(constCircle&

circle)

Point(circle)/*基类拷贝point(circle.x,circle.y)逻辑错误,对象要对拷,整体的拷贝是各部分拷贝的组合*/,radius(circle.radius){}

Derived:

Derived(constDerived&

d)Derived:

d)

Base1(d),Base2(d),Base3(d),//全部采用基类默认的拷贝构造

member1(d.member1),//私有成员类内数据的对拷

member2(d.member2),

member3(d.member3){}//数据的对拷

static成员的继承:

整个的继承体系的所有对象共享基类的static成员

允许访问的前提下,可以通过基类名或者派生类名访问static成员

拷贝构造:

point(constpoint&

point)前者是后者的拷贝函数

:

x(point.x),y(point.y){代码}

**公有继承才能把派生类作为基类成员

编译器对名字的查找过程////local:

派生类成员函数局部

global

含Base的namespace(s)

Base

Derived

Local

多继承时的同名隐藏

虚基类(虚拟继承)首次定义加virtual

虚拟继承时派生类的构造:

Base1,base2两条路径继承来的基类base0的构造由派生类derived确定,在derived的初始化列表中要明确base0的构造

Derived类(base1,base2共同公有派生类)的初始化包括主父基类的初始化和base0的初始化

虚拟继承中,base1和base2中关于base0的定义被忽略

组合与继承:

Public派生继承基类的全部接口,is-a关系

派生类对象的内存布局:

赋值兼容原则,

一个基类指针无论是指向基类对象,还是指向派生类对象,通过它来访问一个基类中定义的成员,可以通过一种方式

基类的指针能指向派生类的对象

栈区里指针指向低端地址,堆区里也一样

Base1*pb1b=pd;

Base2*pb2b=pd;

反直观的结论:

pb1b和pb2b的值不同;

指针的转换并非地址值的复制

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

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1