您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 构造函数的作用是在创建对象时
第八章一,构造函数的作用是在创建对象时,系统自动调用它来给所创建的对象初始化。构造函数的特点:构造函数是一种成员函数,他的说明在类体内,它的函数体可写在类体内,也可以写在类体外。构造函数是一种特殊的成员函数,该函数的名字与类名相同。定义和说明构造函数时,不必指明函数的类型。构造函数可以有一个参数或多个参数,也可以没有参数。构造函数可以重载。构造函数用于创建对象时的系统自动调用,也可以在程序中调用构造函数创建无名对象。构造函数的种类:1.默认构造函数。2.拷贝构造函数。二,析构函数的功能是用来释放一个对象的。当对象结束它的生存期时,系统将自动调用析构函数来释放该对象。析构函数与构造函数的作用正好相反。析构函数的特点:析构函数也是一种成员函数,它的函数体可以写在类体外,也可以在类体内。析构函数的名字同类名,与构造函数的区别是前面加~。析构函数没有参数,不能重载,也不必指明函数类型。析构函数通常是被系统自动调用的。三,成员函数的三个特征内联和外联。成员函数重载。设置默认参数。四,静态成员特点:属于类的,可以用类名加::引用。说明方法:static静态数据成员:初始化方法,对象的特点。静态成员函数:对数据成员的访问方式不同。五,友元函数说明方法:friend特点:说明在类体内的外部数据成员,定义在类体外的非成员函数。作用:访问类中的私有成员,提供程序运行效率。缺点:破坏了类的封装性和隐蔽性。第九章一,对象指针和对象引用对象指针:指向对象的指针。都可以用于函数参数和返回值。二,对象数组1.定义格式:2.对象数组元素:3.区别:指向对象数组的指针和对象指针数组。三,子对象和堆对象子对象概念:一个对象作为另一个类的成员时,该对象称为类的子对象。子对象实际是某类的数据成员。堆对象:在程序运行中,根据需要随时创建的对象称为堆对象。C++中,内存被分为4种储存区域:代码区:用来存放程序代码的数据区:用来存放全局变量、静态类变量和常量等栈区:用来存放局部变量、函数参数、返回值、返回地址和临时变量等堆区;用来存放其余数据,包括对对象等使用运算符new创建堆对象。使用运算符delete释放对象。该运算符是专门用来释放由运算符new所创建的变量或对象。使用delete的注意事项:该运算符必须用于由new返回的指针。对于一个指针只能使用一次运算符delete。指针名前只能使用一对方括号,而不管所释放数组的为数,并且方括号内不写任何东西。该运算符也适应于空指针。四,类型转换和转换函数类型转换包括隐含类型转换和强制类型转换。转换函数是一种强制类型转换。单参数的构造函数,提供了一种功能,可以将其他数据类型的数值或变量转换为用户所定义的数据类型。这便是单参数构造函数所具有的类型转换功能。转换函数的使用应该注意:a)转换函数是成员函数,但它必须是非静态的。b)在定义转换函数时不能带类型说明,因为该函数名字就是类型转换的目标类型。c)转换函数是用来进行类型转换的,定义是不必带有任何参数。d)转换函数不能定义为友元函数。第十章一,基类和派生类的概念单继承和多继承三中继承方式派生类构造函数的调用顺序:基类构造函数。子对象构造函数。派生类构造函数。派生类析构函数的调用顺序:先调用派生类的析构函数。在调用派生类中子对象的析构函数。最后调用基类的析构函数。在基类中定义有默认构造函数或者没有定义任何构造函数时,派生类构造函数中省略对基类构造函数的调用。二,子类型定义:作用:子类型的重要作用就在于类型适应。第十一章一,运算符重载的概念声明:operator大多少运算符都可以重载,只有4个不能:..*::?:运算符重载的四个不变原则:优先性不变。结合性不变。操作个数不变。语法结构不变。运算符重载的两种形式:成员函数形式友元函数形式二,静态联编和动态联编的概念静态联编:指在程序编译阶段进行联编的,这种联编又称为早期联编,这是因为这种联编工作是在程序运行之前完成的。动态联编:指在程序运行时进行的联编,又称晚期联编。继承是动态联编的基础,虚函数是动态联编的关键。三,动态联编的条件公有继承虚函数引用虚函数的方法:对象引用和对象指针、成员函数。虚函数的特性:派生类中的虚函数与基类中的虚函数具有相同的参数个数、对应的参数类型,相同的返回值类型。基类中说明的虚函数具有自动向下传给他的派生类的性质。即派生类的虚函数中的virtual说明可以省略。只有非静态数据成员函数才可以说明为虚函数。构造函数不能说明为虚寒酸,因为对象在创建时它还没有确定的内存空间,只有在构造后才是一个类的实例。析构函数可以是虚寒酸,并且最好是在动态联编的时候说明成虚寒酸。四,抽象类定义:抽象类是一种特殊的类,这种类不能定义对象。它的主要作用是用来组织一个继承的层次结构,并由它提供一个公共的根,而相关的子类由它派生出来。特点:一个抽象类至少具有一个纯虚函数。用途:抽象类用来描述一组子类的共同的操作接口,它只能用作基类,而完整的实现由子类完成。第十三章格式化输出设置对齐方式,设置数据宽度。ios::leftios::rightresetiosflags(long),setiosflags(long),setfill(int),setw()Cout.width(int),cout.fill(int),cout.setf(),cout.precision(),例子:voidmain(){for(inti=7;i1;i--)coutsetfill('')setw(i)setfill('*')setw(15-2*i)#endl;for(inti=1;i8;i++)coutsetfill('')setw(i)setfill('*')setw(15-2*i)#endl;}结果:#**#****#******#********#**********#************#**********#********#******#****#**###includeiostream.hclassB{public:virtualvoidfn(){coutInB.\n;}};classD:publicB{public:virtualvoidfn(){coutInD.\n;}};voidtest(B&x){x.fn();}voidmain(){Bb;test(b);Dd;test(d);}结果:InB.InD.#includeiostream.hclassA{public:A(){a=0;}A(inti){a=i;}voidprint(){couta,;}private:inta;};classB:publicA{public:B(){b1=b2=0;}B(inti){b1=0;b2=i;}B(inti,intj,intk):A(i),b1(j),b2(k){}voidprint(){A::print();coutb1,b2endl;}private:intb1;intb2;};voidmain(){Bb1;Bb2(5);Bb3(1,2,3);b1.print();b2.print();b3.print();}结果:0,0,00,0,51,2,3#includeiostream.h#includemath.hclassPoint{public:Point(doublei,duoublej){x=i;y=j;}voidGetxy(){cout(x,y)endl;}frienddoubleDistance(Pointa,Pointb);private:doublex,y;}doubleDistance(Pointa,Pointb){doubledx=a.x-b.x;doubledy=a.y-b.y;returnsqrt(dx*dx+dy*dy);}voidmain(){doubled11=3.0,d12=4.0,d21=6.0,d22=8.0;Pointp1(d11,d12),p2(d21,d22);p1.Getxy();p2.Getxy();doubled=Distance(p1,p2);coutDistanceisdendl;}结果:(3,4)(6,8)Distanceis5#includeiostream.hclassM{public:M(inta){A=a;B+=a;}staticvoidfun(Mm);private:intA;staticintB;}voidM::fun(Mm){coutA=m.Aendl;coutB=Bendl;}intM::B=10;voidmain(){MP(6),Q(8);M::fun(P);Q.fun(Q);}结果:A=6B=24A=8B=24
本文标题:构造函数的作用是在创建对象时
链接地址:https://www.777doc.com/doc-2384560 .html