大学C老师亲自总结要点_第1页
大学C老师亲自总结要点_第2页
大学C老师亲自总结要点_第3页
大学C老师亲自总结要点_第4页
大学C老师亲自总结要点_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大学C老师亲自总结要点大学C老师亲自总结要点大学C老师亲自总结要点1数组一维数组的定义一般语法形式数据类型数组名[常量表达式]例:inta[10]floats[5]一维数组初始化在定义一个数组的同时对数组元素赋初值例:inta[5]={1,2,3,4,5},b;可以仅对一部分下标元素赋初值例:inta[5]={1,2,3};对数组中全部元素赋初值为0例:inta[5]={0};如果对数组的元素全部赋初值,可以省略定义元素个数例:inta[]={1,2,3,4,5,6};二维数组二维数组的定义一般语法形式数据类型数组名[常量表达式1][常量表达式2]例:inta[3][5];floats[6][3];二维数组初始化在定义一个数组的同时对数组元素赋初值例:inta[2][5]={{1,2,3,4,5},{4,5,6,7,8}};将各元素的初值写在一个大括号里例:inta[2][5]={1,2,3,4,5,6,7,8,9,0};可以仅对一部分下标元素赋初值例:inta[2][5]={{1,2},{3,4,5}};例:inta[2][5]={1,2,3,4,5,6};对数组中全部元素赋初值为0例:inta[2][5]={0};2字符数组和字符串字符数组的定义在C++的基本数据类型变量中没有字符串变量,采用字符型数组来存放字符串。字符型数组定义的一般语法形式为:

char数组名[常量表达式]例:charc[10];chars[20];字符数组的初始化字符数组引用方法及其他类型的数组基本相同。例:chara[20]={'T','h','i','s','','i','s','','a','','b','o','o','k'}; charb[10]="program"; inti; cout<<a<<endl; for(i=1;i<=20;i++) cout<<a[i]; cout<<endl; cout<<b<<endl;指针3指针变量的声明一般语法格式数据类型*指针变量名;其中:数据类型----可以是任意类型,指的是指针所指向的对象的数据类型。这说明了指针所指的内存单元可以有用于存放什么类型的数据,称之为指针的类型。例:int*p;//指针p用来存放int型数据的地址

float*a;//指针p用来存放float型数据的地址“*”和“&”*称为指针运算符,表示指针所指向的变量的值 *出现在声明语句中的被声明变量之前时,表示被声明的变量是指针变量。如:int*p; *出现在执行语句中或声明语句的初值表达式中时,表示访问指针所指对象的内容。如:cout<<*p;&取地址运算符,用来得到一个对象的地址

&出现在声明语句中的被声明变量之前时,表示声明的引用。如:int&x; &出现在执行语句中或声明语句的初值表达式中时,表示取对象的地址。 如:inta;int*p;a=1;p=&a;

cout<<"a="<<a<<"p="<<p<<endl;4指针运算指针是一种数据类型,及其他数据类型一样,指针变量也可以参及部分运算,主要是算术运算、关系运算和赋值运算,只是运算规则比较特殊。指针变量的算术运算主要是加减运算,指针加减运算的结果及指针的数据类型密切相关。如:指针变量的引用例:#include<iostream>usingnamespacestd;voidmain(){

inta,b,*p1,*p2;

p1=&a; p2=&b; *p1=123; *p2=456; cout<<"a="<<a<<endl; cout<<"p1="<<p1<<endl; cout<<"b="<<b<<endl; cout<<"p2="<<p2<<endl;}5指针及数组

#include<iostream>usingnamespacestd;

voidmain(){

inta[8],*p;

p=&a[0];

*p=123;

p++; *p=456;

cout<<"a[0]="<<a[0]<<endl; cout<<"a[1]="<<a[1]<<endl;}指针及多维数组#include<iostream>usingnamespacestd;voidmain(){ inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},i,j,*p; for(i=0;i<3;i++) { for(j=0;j<3;j++) { p=&a[0][0]+i*3+j; cout<<*p<<""; } cout<<endl;}}指针及多维数组#include<iostream>usingnamespacestd;

voidmain(){ inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},i,j,*p; for(i=0;i<3;i++) { for(j=0;j<3;j++) { p=a[i]+j; cout<<*p<<""; } cout<<endl; }}6指针及字符串#include<iostream>usingnamespacestd;

voidmain(){

chara[15]="abcdefg",i,*p; p=&a[0];

for(i=0;i<15;i++) { if(*p==0) break; cout<<*p; p++; } cout<<endl;}7动态存储分配一般语法形式new数据类型[整型表达式1][整型表达式2]……;其中:数据类型表示要申请何种数据类型的存储空间整型表达式表示每一维数组的长度功能:动态为一维或多维数组申请存储空间如果申请分配成功,返回数组的指针,失败则返回空指针null。8释放动态分配存储空间一般语法形式delete[]指针;功能:用于释放动态申请的数组存储空间#include<iostream>usingnamespacestd;

voidmain(){

int*a,i,n;

cout<<"请输入1班同学的人数:"; cin>>n;

a=newint[n];

for(i=0;i<n;i++) { cout<<"请输入1班"<<i+1<<"号同学的成绩:"; cin>>a[i];}

cout<<endl; for(i=0;i<n;i++) { cout<<"1班"<<i+1<<"号同学的成绩是:"; cout<<a[i]<<endl;} cout<<endl;delete[]a;}自定义数据类型9结构体结构体是由不同数据类型的数据组成的集合体结构体声明语句的语法形式:struct结构名{

数据类型说明符1成员名1; 数据类型说明符2成员名2;

︰︰

数据类型说明符n成员名n;};结构体类型变量声明的语法形式:结构名结构变量名;结构成员的引用形式:结构变量名.成员名例:#include<iostream>usingnamespacestd;structstudent{ intnum; charname[20]; intage;};voidmain(){

studentstu1={1,"zhangsan",18},stu2; stu2.num=2; stu2.age=20; cout<<stu1.num<<""<<<<endl; cout<<stu2.num<<""<<stu2.age<<endl;}#include<iostream>usingnamespacestd;

structstudent{ intnum; charname[20]; intage;};voidmain(){

studentstu[5]={1,"zhangsan",18}; stu[1].num=2; stu[1].age=20;

cout<<stu[0].num<<""<<stu[0].name<<endl; cout<<stu[1].num<<""<<stu[1].age<<endl;}10结构体数组11函数计算机技术基础系列课程课件函数的定义函数定义的语法形式类型标识符函数名(形式参数表){

语句序列}函数的类型和返回值函数的类型----类型标识符规定了函数的类型,也就是函数的返回值的数据类型函数的返回值----是指需要返回给主调函数的处理结果,由return语句给出。如:return0;returny;等无返回值的函数其类型标识符为void,不必写return语句形式参数形式参数(简称形参)表的内容如下:type1name1,type2name2,……,typennamen例如:intx,inty,floatz,……形参的作用:实现主调函数及被调函数之间的数据联系。没有形参的函数在形参表的位置应写void函数在被调用前是静止的,被调用时才由主调函数将实际参数(简称实参)赋予形参,并执行该函数过程函数的调用函数调用的语法形式

函数名(实参列表)实参列表中应给出及函数形参个数相同、类型相符的实参(实参可以是:常量、变量和表达式)例如:(3,x,5*a+b,……)函数调用可以作为语句,这时函数可以没有返回值函数调用的执行过程main()调

fun(a,2*b)结束保存返回地址进行参数传递恢复返回地址带回计算结果

fun(intx,floaty)返回12函数的原型声明调用函数之前先要在主调函数中声明函数原型语法形式:类型标识符函数名(形式参数表);注意:在函数调用之前对所调用的函数进行声明,指出该函数的返回值的类型以及形参的个数和类型,编译器据此信息对函数调用进行语法检查,保证形参和实参的个数和类型的一致性,保证返回值的使用正确性。13函数重载函数重载两个以上的函数,取相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数,这就是函数的重载14函数的参数传递值调用值调用是指当发生函数调用时,给形参分配内存空间,并用实参来初始化形参(直接将实参的值传递给形参)。这一过程是参数值的单向传递过程,一旦形参获得了值便及实参脱离关系,此后无论形参发生了怎样的改变,都不会影响到实参引用调用引用调用可以使在子函数中对形参所做的更改对主函数中的实参有效。值调用#include<iostream>usingnamespacestd;intabc(inta){ a=a*10; cout<<"a="<<a<<endl; returna;}intabc(inta);voidmain(){ inta; a=5; abc(a); cout<<"a="<<a<<endl;}引用调用#include<iostream>usingnamespacestd;intabc(int&a){ a=a*10; cout<<"a="<<a<<endl; returna;}intabc(int&a);voidmain(){ inta; a=5; abc(a); cout<<"a="<<a<<endl;}#include<iostream>usingnamespacestd;intmin(inta[],intlength){ inti,m; m=0; for(i=1;i<length;i++) if(a[i]<a[m])m=i; returnm;}voidmain(){ intarray[10]={18,26,23,13,15,25,27,14,29,31},tag;

tag=min(array,10);

cout<<"数组中最小的元素是:"<<array[tag]<<endl;}*

找出数组中的最小元素。函数的参数为数组:#include<iostream>usingnamespacestd;intmin(int*p,intlength){ inti,m; m=*p;p++; for(i=1;i<length;i++,p++) if(*p<m)m=*p; returnm;}voidmain(){ intarray[10]={18,26,23,13,15,25,27,14,29,31},t;

t=min(array,10);

cout<<"数组中最小的元素是:"<<t<<endl;}*

找出数组中的最小元素。函数的参数为指针:#include<iostream>usingnamespacestd;int*min(int*p,intlength){ inti,*p1; p1=p;p++; for(i=1;i<length;i++,p++) if(*p<*p1)p1=p; returnp1;}voidmain(){ intarray[10]={18,26,23,13,15,25,27,14,29,31},*t;

t=min(array,10);

cout<<"数组中最小的元素是:"<<*t<<endl;}*

找出数组中的最小元素。函数的返回值为指针:#include<iostream>usingnamespacestd;voidchange(int*&t){ intx=15; t=&x; cout<<"t="<<t<<endl;}voidmain(){ int*p; change(p); cout<<"p="<<p<<endl;}函数的参数为指针变量的引用:15函数的递归调用一个函数直接或间接地调用该函数本身,便构成了函数的递归调用。前者称为直接递归调用,后者称为间接递归调用。什么叫递归调用?例:求n!#include<iostream>usingnamespacestd;intfac(intn);voidmain(){ intnf; nf=fac(6); cout<<"6!="<<nf<<endl;}intfac(intn){ if(n<=1) return1; else returnn*fac(n-1);}递归调用的执行过程main()调用fac(3)返回fac(3)返回3*调用fac(2)3*2*1fac(1)返回1返回2*调用fac(1)2*1fac(2)16C++系统函数为了方便程序员编程,VisualC++软件包提供了大量已预先编制好的函数,即系统函数(又称库函数或标准函数),对于系统函数,用户可以不用定义和声明而直接调用它们。C++软件包将不同功能的系统函数的函数原型分别写在不同的头文件中,这些头文件是以“.h”为文件名后缀的文件,在使用某一系统函数前,必须用include预处理指令给出该函数的原型所在头文件的文件名。例:函数名:sqrt函数原型:doublesqrt(doublex);所需头文件:<math.h>功能和返回值:计算并返回x的平方根。

17内联函数内联函数内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用语句处定义内联函数的语法形式inline类型说明符被调函数名(含类型说明符的形参表)注意:内联函数体内一般不能有循环语句和switch语句内联函数的定义必须出现在第一次被调用之前通常内联函数应该是比较简单的函数,结果简单、语句少如果将一个复杂的函数定义为内联函数,会造成代码膨胀,增大开销#include<iostream>usingnamespacestd;

voidmain(){ doublex,y,z; cout<<"enterx:"; cin>>x>>y;z=cube(x)-cube(y); cout<<"z="<<z<<endl;}inlinedoublecube(doublex){ returnx*x*x;}例:计算类和对象4618类的定义在C++中声明类的一般形式为:class<类名>{

数据成员声明;

成员函数声明; …………;

};<各个成员函数的实现>;变量声明函数原型声明

类的定义包含两部分:类头和类体,类头由关键字class及其后面的类名构成;类体由一对大括号包围起来,一般情况下,类定义后面接一个分号。

别忘了必须用分号结束!4719关于访问权限类成员访问权限公有(public)成员:可以在类外访问。私有(private)成员:只能被该类的成员函数访问。保护(protected)成员:只能被该类的成员函数或派生类的成员函数访问。数据成员通常是私有的。成员函数通常有一部分是公有的,一部分是私有的。公有成员函数可在类外被访问,也称之为类的接口。48类的定义class<类名>{

private:<私有数据成员和成员函数>;

protected:<保护数据成员和成员函数>;

public:<公有数据成员和成员函数>;};<各个成员函数的实现>;成员函数的实现方法既可以定义在类的内部也可以定义在类的外部!49类的数据成员数据成员的声明和定义类的数据成员的声明方式同变量声明相同,数据成员可以是任意类型,包括基本数据类型,例如整型、字符,也可以包括复杂类型,例如结构、结构数组和类类型。数据成员声明的一般形式:

类型名对象名;例如:

intx;缺省了访问权限定义,数据成员整型变量x为私有数据成员5020类的成员函数成员函数的声明和定义函数的原型声明要写在类的主体中,原型说明了函数的形参表和返回值类型。而函数的具体定义是写在类定义之外的。及普通函数不同的是,定义函数时要指明类的具体名称。成员函数定义的一般形式:函数类型类名::成员函数名([形参表]){

函数体}5121对象声明了数据类型“类”之后,就可以像定义int、float等数据类型变量那样去建立类的变量。只是将“类”类型的变量叫类对象,或类实例(实体)。这个所谓的“对象”是指将一组和使用该数据的一组操作或过程封装起来,形成独立的实体。这样必须定义实体的变量。对类来说就是为该类定义一个对象。52定义类对象称为类的实例化类对象定义的一般形式:

1、类名类对象名;

例如:Pointa;

2、类名类对象指针名;

例如:Point*p;

注意:p=newPoint;动态创建一个对象

p=&a;获取已定义对象的地址

deletep;动态创建的对象可在不需要时释放5322对象成员的引用数据成员对象名.成员名

或:对象指针名->成员名例:a.xa.y或p->xp->y成员函数对象名.

成员名(参数表)或:对象指针名->成员名(参数表)例:a.setPoint(10,10)a.move(5,3)a.display()

p->setPoint(5,6)p->move(2,5)p->display()54构造函数和析构函数

5523构造函数

构造函数和析构函数都是类的成员函数,但是他们是特殊的成员函数,不用调用便自动执行,而且这些函数的名字及类的名字有关.问题提出:类的数据成员如何初始化?

类定义体中不能在定义时初始化数据成员,数据成员的值是无定义的。C++提供了一个方法:利用类的构造函数来初始化类的数据成员.56构造函数构造函数是类的一个特殊成员函数它及类同名没有返回值(甚至连关键字void也不能有)在创建类的对象时,编译器会自动调用类的“构造函数”可以在构造函数中执行初始化成员变量的操作。57构造函数的形式参数Point(){x=0;y=0;}//定义无参构造函数对应的类对象声明:Pointa;Point(intx1,inty1){x=x1;y=y1;}

//定义有参构造函数对应的类对象声明:Pointa(0,0);

或:

Pointa(3,5);58构造函数的形式参数Point(intx1=0,inty1=0){x=x1;y=y1;}

//定义带默认值的有参构造函数对应的类对象声明:Pointa();

或:

Pointa(3,5);

或:

Pointa(6);59

重载构造函数

构造函数可以象普通函数一样被重载,C++根据说明中的参数个数和类型选择合适的构造函数.

例:在Point类中重载构造函数

Point(){x=0;y=0;}//定义构造函数

Point(intx1,inty1){x=x1;y=y1;}//有参构造函数60默认构造函数

如果一个类没有定义构造函数,编译器会自动生成一个不带参数的构造函数,称为默认构造函数,在程序中定义一个对象而没有指明初始化时,编译器便按默认构造函数来初始化该对象。classPoint{public:

Point(){} ...}61

对象指针Firstpoint:(12,6)Secondpoint:(5,12)void

main(){ Pointa(12,6),*p=newPoint(5,12); cout<<“Firstpoint:”; a.dispoint(); cout<<“Sencondpoint:”; p->dispoint();

deletep;}

执行结果如下:注意:在动态创建对象时,要调用类的构造函数。6224拷贝(初始化)构造函数概念:拷贝构造函数是一种特殊的构造函数拷贝构造函数的形参为本类对象的引用。作用:当使用同类型的对象初始化另一个对象时,不能简单的将一个对象的数据成员直接拷贝给另一个对象。为了达到对象整体复制的目的,需要定义一个特殊的构造函数:拷贝构造函数。63拷贝构造函数声明形式为:class类名{public:

类名(形参);//构造函数类名(类名&对象名);//拷贝构造函数

...};类名::类名(类名&对象名)//拷贝构造函数的实现{函数体}64需要注意:拷贝构造函数是将已知对象的数据成员的值拷贝给正在创建的同类的对象拷贝构造函数只能有一个参数,并且是对某个对象的引用每个类必须有一个拷贝初始化构造函数,若没有显式说明,则系统会自动生成一个默认的拷贝初始化构造函数6525析构函数的引出问题的提出:对象消失时应做一些扫尾工作?一个类的对象在生命期间分配了资源,这些资源需要在对象不复存在以前被释放.(例如,如果构造函数中动态分配了内存,这块内存在对象消失之前必须被释放.)

及构造函数对应的是析构函数,当一个对象消失时,系统会自动调用类的析构函数。66析构函数析构函数名字:符号“~”+类名析构函数没有参数没有返回值.一个类中只可能定义一个析构函数,所以析构函数不能重载。析构函数在对象生命期结束时被编译器自动调用。67析构函数声明形式为:class类名{public:

类名(形参);//构造函数

~类名();//析构函数

...};类名::~类名()//析构函数的实现{函数体}68默认析构函数

如同默认构造函数一样,如果一个类没有定义析构函数,编译器会自动生成一个默认析构函数,其格式如下:

<类名>::~<默认析构函数名>(){}默认析构函数是一个空函数69析构函数的自动调用

当对象超出其定义范围时(即释放该对象时),编译器自动调用析构函数。在以下情况下,析构函数也会被自动调用。如果一个对象被定义在一个函数体内,则当这个函数结束时,该对象的析构函数被自动调用若一个对象是使用new运算符动态创建的,在使用delete运算符释放它时,delete将会自动调用析构函数70构造函数及析构函数

构造函数和析构函数是两个非常特殊的函数:它们都没有返回值。

对于构造函数和析构函数而言,我们在定义的时候应该把它们定义成public类型的,因为这两个函数也要遵循类的成员函数的访问限制,虽然我们没有显式的调用它们。

构造函数和析构函数不能显式的被调用。7126数据成员的初始化72数据成员的初始化1.在构造函数的函数体中进行初始化。2.在构造函数的头部初始化。3.混合初始化。4.拷贝构造函数73在构造函数的函数体中初始化classPerson{ charm_strName[20];intm_nAge;intm_nSex;public: Person(){strcpy(m_strName,”XXX”);m_nAge=0;m_nSex=0;} Person(char*name,intage,charsex) { strcpy(m_strName,name);m_nAge=age;m_nSex=(sex=='m'?0:1); }}例如,当遇到声明

Personpersonl(“Zhang3”,19,‘f’); Personperson2=Person(“Zhang3”,19,‘f’);74

在构造函数的头部初始化。其格式为:

<类名>::<构造函数>(<参数表>):<变量1>(<初值1>),…,<变量n>(<初值n>)

{

…… }例如Person::Person():m_nAge(0),m_nSex(0) { }75混合初始化例如Person::Person():m_nAge(0),m_nSex(0) { strcpy(m_strName,“XXX”); }76类的继承7727类的继承

继承机制使类及类之间建立一种上下级的层次关系,通过继承,从现有类中获得其属性和行为,并对其覆盖、改写、新增,产生新类所需要的功能。创建新类时,无须从头编写数据成员和成员函数,只需要选择合适的基类,派生类可以增加自己的数据成员和成员函数,因此派生类比基类更强大,继承真正的优越性来自于可以在派生类中对基类特征的追加、替代和精简。78基本概念继承及派生继承----从现有类中继承其属性和行为,产生新类。派生----利用现有类的属性和行为,派生出新类。基类、派生类从一个类派生出另一个类时,原始类称为基类(或者父类、超类),新类称为派生类(或者子类)。7928单一继承和多重继承

在C++中有两种继承:单一继承和多重继承。对于单一继承,派生类只有一个基类,对于多重继承,派生类可以有多个基类。单一继承A类B类多重继承A类B类C类D类8029派生类的定义格式class派生类名:继承方式基类名{

派生类增加的成员声明;};

1,继承方式基类名2,…,继承方式基类名n81派生类的定义形式class派生类名:基类名

{

派生类成员;};继承方式可以使用关键字public表示公有继承,或者使用关键字private表示私有继承,或者使用关键字protected表示保护继承,最常见的是公有继承。继承方式82派生类的语法结构class<派生类名>:<继承方式><基类名>{

private: 新增私有数据成员和成员函数

protected: 新增保护数据成员和成员函效

public: 新增公有数据成员和成员函效}8330派生类的继承方式私有继承private公有继承public

保护继承protected84公有继承(public)

公有继承方式创建的派生类对基类各种成员访问权限如下:基类公有成员相当于派生类的公有成员,即派生类可以象访问自身公有成员一样访问从基类继承的公有成员。基类保护成员相当于派生类的保护成员,即派生类可以象访问自身的保护成员一样,访问基类的保护成员。对于基类的私有成员,派生类内部成员无法直接访问。派生类使用者也无法通过派生类对象直接访问。85私有继承

(private)派生类对基类各种成员访问权限如下:基类公有成员和保护成员都相当于派生类的私有成员,派生类只能通过自身的函数成员访问他们对于基类的私有成员,无论派生类内部成员或派生类使用者都无法直接访问。86保护继承(public)

保护继承方式创建的派生类对基类各种成员访问权限如下:基类的公有成员和保护成员都相当于派生类的保护成员,派生类可以通过自身的成员函数或其子类的成员函数访问他们对于基类的私有成员,无论派生类内部成员或派生类使用者都无法直接访问87基类成员在派生类中的访问控制

publicprotectedprivatepublicpublicprotected不可访问protectedprotectedprotected不可访问privateprivateprivate不可访问基类访问属性派生类中类型继承方式88派生类的构造函数和析构函数派生类构造函数的一般形式为: 派生类名::派生类名(参数总表):基类名1(参数表1),…,基类名n(参数表n), 内嵌对象名1(对象参数表1),…,内嵌对象名m(对象参数表m)

{

派生类新增加成员的初始化;

}89

31派生类的构造函数派生类也有构造函数,用以完成对象的初始化工作。派生类的构造函数有两个主要功能:初始化基类对象和初始化派生类中的所有数据成员。当定义一个派生类的对象时,先调用基类的构造函数,然后再调用派生类的构造函数。90构造函数的执行顺序1)基类构造函数,如果有多个基类则构造函数的调用顺序是某类在类派生表中出现的顺序而不是它们在成员初始化表中的顺序。2)成员类对象的构造函数,如果有多个成员类对象,则构造函数的调用顺序是对象在类中被声明的顺序而不是它们出现在成员初始化表中的顺序。3)派生类构造函数,作为一般规则,派生类构造函数应该不能直接向一个基类数据成员赋值而是把值传递给适当的基类构造函数。9132派生类的析构函数形式派生类名::~派生类名({ …}派生类及基类的析构函数没有什么联系,彼此独立,派生类或基类的析构函数只作各自类对象消亡前的善后工作

92析构函数的调用顺序1)派生类析构函数。2)派生类的类数据成员析构函数。3)基类析构函数。93派生类调用构造函数一般形式说明9433多态性多态性含义实现“一种接口,多种方法”的技术某类的对象在接受同样的消息时,做出不同的响应多态性的形式编译时多态性

编译器对源程序进行编译时就可以确定所调用的是哪一个函数,编译时多态性通过重载来实现;函数重载运算符重载

运行时多态性

在程序运行过程中根据具体情况来确定调用的是哪一个函数;虚函数34派生类对象替换基类对象

原则:凡是基类对象出现的场合都可以用公有派生类对象取代

形式

(1)派生类对象给基类对象赋值(2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论