ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:25.75KB ,
资源ID:3646310      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3646310.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(3C第三章讲解.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

3C第三章讲解.docx

1、3C 第三章讲解#include using namespace std;class Point private: double x; double y; public: double getx() return x; double gety() return y; void setx(double x); void sety(double y);void Point:setx(double xx) x = xx;void Point:sety(double yy) y = yy;int main() double a; a = 1; Point p1, p2, p3; Point p10;

2、p1.setx(0); p1.sety(0); coutp1.getx() p1.gety()endl; return 0;#include #include using namespace std;class Student private: int age; char *name; public: Student(int a, char *n); Student(); void show() coutage nameendl; ;Student:Student(int a, char *n) age = a; name = new charstrlen(n)+1; strcpy(name,

3、 n);Student:Student() age = 18; name = new char50; strcpy(name, zhang);int main() Student s1, s2(24,ling); s1.show(); s2.show();#include #include using namespace std;class Point private: double x; double y; public: Point(int xx, int yy) x = xx; y = yy; Point(int xx=0) x = y = xx; void show() coutset

4、precision(16)x, y”作为指针对象和对象成员之间的间隔符。对象的生存期是指对象从它被创建开始到被销毁前在内存中存在的时间,分为静态生存期(全局变量和静态变量具有与程序运行期相同的生存期)和动态生存期(局部对象从它的定义位置开始,遇到离它最近的“”就结束了)。类的用法(关键字class):class class_name/类名,常用首字符大写的标识符 private:/可以省略 data_member; /数据成员 functin_name; /成员函数 public: data_member; functin_name; protected: data_member; funct

5、in_name;/分号不可少对象的定义:类名 对象1,对象2;对象的引用:对象名.数据成员名对象名.成员函数名(实参表)对象的赋值:对象名1 = 对象名2;类构成了一种特殊的作用域,称为类域(指类定义时的一对花括号所括起来的范围)。类域范围内的成员可以相互访问,不受成员访问控制权限的限定,类外的函数则只能访问的公有成员。类的数据成员与某个成员函数内定义的变量同名,可以用类名:数据成员名的方式访问数据成员。形式:class X /类域开始 /类域结束例 Clock类#include #include using namespace std;class Clock private: int h;

6、int m; int s; public: void seth(int hh) h = hh; void setm(int mm) m = mm; void sets(int ss) s = ss; void disptime();void Clock:disptime() coutNow is h:m:sseth(10); pa-setm(23); pa-sets(34); pb = pa; pa-disptime(); pb-disptime(); aClock.disptime(); bClock.disptime();例 对象的生存期#include using namespace s

7、td;class X public: X(int ii = 1) i = ii; coutX (ii) createdendl; X() coutX (i) destroyedendl; private: int i;class Z public: Z():x3(3), x2(2) coutZ createdendl; Z() coutZ destroyedendl; private: X x1, x2, x3;X a(200);/a的生存期开始int main() Z z;/z的生存期开始,且其成员对象 x1x2x3 的生存期开始,且先于z X c(100);/c的生存期开始 static

8、X b(50);/b的生存期开始 /c的生存期结束/zx3x2x1b的生存期依次结束/main 函数结束后,a的生存期才结束一、 结构的扩展对比结构,添加了成员函数和访问权限。访问权限限定符没有先后次序之分,出现次数没有限制,有效范围是从其开始直到下一个权限设置。数据成员可以是任何的数据类型,但不能是自身类的对象,不能指定为auto、register、extern存储类型在声明类时,不能为数据成员赋初值。访问权限限定符(用于指定数据成员和成员函数的访问权限):(1) public: 被设置为public权限的成员称为类的公有成员,可以被任何函数访问。Public区域中的成员称为类的接口;(2)

9、 private:被设置为private权限的成员称为类的私有成员,只能被结构内部的成员访问;(3) protected:与继承有关。例 包含数据和数据操作函数的复数结构#include using namespace std;class Complex private: double r; double i; public: void init(double rr, double ii) r =rr; i = ii; double real() return r; double image() return i; ;int main() Complex a; a.init(2, 3); co

10、uta.real()+a.image()iendl; return 0;二、 成员函数两种定义方式:(1)在声明类时就给出成员函数的定义,这种方式定义的成员函数若符合内联函数的条件,会被处理为内联函数。例 Date类的定义class Date private: int day, month, year; public: void init(int d, int m, int y) day = d; month = m; year = y; int getday() return day; ;(2)在声明类时,只声明成员函数的原型,然后在类的外部定义成员函数。若在类外成员函数的定义前加上关键字i

11、nline,该成员函数就被定义为内联函数。用法:r_type class_name:f_Name(T1 p1, T2 p2,); 注:r_type是成员函数的返回类型,:是域限定符,f_Name是成员函数名,T1、T2是参数类型,p1、p2是形式参数,在函数原型中形参名可以省略。例 Date类的定义class Data private: int day, month, year; public: void init(int , int , int ); int getday();inline void Date:init(int d, int m, int y) day = d; month

12、= m; year = y;int Date:getday() return day;为了禁止成员函数(只有类的成员函数)修改数据成员的值,可以将它设置成常量成员函数。用法:class x T f(T1, T2,)const; ;T是函数返回类型,f是函数名,T1、T2是各参数的类型。将成员函数设置成const类型后,该成员函数不会修改任何数据成员的值。三、 构造函数构造函数是与类同名的特殊成员函数,在对象被定义之后的第一时间被调用,主要用来初始化对象的数据成员。构造函数通常定义为公有成员,与类同名,没有返回类型,可以被重载,由系统自动调用,不允许在程序中显式调用。定义数组对象时,必须有不需要

13、参数的构造函数。可以在类的内部定义构造函数,也可以在类中声明构造函数,任何在类外进行定义。内部定义用法:class X/类名 X()/构造函数 ;外部定义用法:X:X(); ;例 Desk类的构造函数#includeusing namespace std;class Desk public: Desk(int , int , int , int );/构造函数声明 void setWeight(int w) weight = w; private: int weight, length, width, high;Desk:Desk(int ww, int l, int w, int h)/构造

14、函数定义 weight = ww; high = h; width = w; length = l; coutcall constructor !endl;int main() Desk d1(2, 3, 4 ,5); Desk *pd; pd = new Desk(1, 1, 1, 1);(1)无参构造函数a.默认构造函数每个类必须有构造函数,如果一个类没有定义任何构造函数,在需要的时候,编译器将为它生成一个默认构造函数,负责对象的创建和初始化(全局对象或静态对象,所有数据成员初始化为0,局部对象不进行初始值设置)。默认构造函数类似于:class X X() ;b.缺省参数构造函数有些构造函

15、数的参数在多数情况下都比较固定,只是有时会发生变化,可以将它们的参数定义为缺省参数,即为参数提供默认值。例 定义Point类的无参数构造函数和缺省构造函数(如果显式定义了无参数的构造函数,又定义了全部参数都有默认值的构造函数,容易在定义对象时产生二义性)#include using namespace std;class point private: int x, y; public: point(int a, int b) x = a; y = b; int getx() return x; int gety() return y; /* point() x = 0; y = 0; /显式定

16、义无参构造函数*/ point(int a=0, int b=0)/缺省参数构造函数 x = a; y = b; ;point p0; / 调用构造函数point(),a、b默认为0point p1(1,1);/ 调用构造函数point(int a, int b)int main() static point p2; / 调用构造函数point(),a、b默认为0 point p3; / 调用构造函数point(),a、b默认为0 point a10; / 调用构造函数point(),a、b默认为0 point *p4; / 不调用任何构造函数 p4 = new point; / 调用构造函数

17、point(),a、b默认为0 coutp0: p0.getx(),p0.gety()endl; coutp1: p1.getx(),p1.gety()endl; coutp2: p2.getx(),p2.gety()endl; coutp3: p3.getx(),p3.gety()endl; coutp4: getx(),gety()endl; couta0: a0.getx(),a0.gety()endl;c.重载构造函数重载的构造函数必须有不同的函数原型例 重载Tdate的构造函数#include using namespace std;class Tdate public: Tdate

18、(); Tdate(int d); Tdate(int m, int d); Tdate(int m, int d, int y); protected: int month, day, year;Tdate:Tdate() month =4; day = 1; year = 1995; coutmonth/day/yearendl;Tdate:Tdate(int d) month =4; day = d; year = 1995; coutmonth/day/yearendl;Tdate:Tdate(int m, int d) month =m; day = d; year = 1995;

19、coutmonth/day/yearendl;Tdate:Tdate(int m, int d,int y) month =m; day = d; year = y; coutmonth/day/yearendl;int main() Tdate oneday; Tdate aday();/函数返回一个Tdate类型的对象 Tdate bday1(10); Tdate bday2=10;/ 等价于Tdate bday2(10); Tdate cday(2, 12); Tdate dday(1, 2, 1998);d.拷贝构造函数如果在一个类中要用已存在的对象初始化另一个对象,如果没有定义类的拷

20、贝构造函数,在需要时,编译器将产生一个具有最小功能的默认拷贝构造函数。默认拷贝构造函数以成员按位复制(把一个对象各数据成员的值原样复制到目标对象中)的方式实现成员的复制。拷贝构造函数与类同名,没有返回类型,可以重载。当一个类存在指针类型的数据成员时,默认拷贝构造函数常会产生指针悬挂问题,故需要为它提供显式的拷贝构造函数。默认拷贝构造函数的形式类似于:X:X(const X&) /参数常是const类型的本类对象的引用调用情况:1. 初始化新对象2. 用对象作为函数的参数3. 用返回值作为函数的参数class X( );X obj1;X obj2 = obj1;/情况1,同X obj2(obj1

21、);f(X o); /情况2X f() X t; return t; /情况3例 为Person类定义拷贝构造函数#include #include using namespace std;class Person private: char *name; int age; public: Person(char *Name, int Age); Person(); void setAge(int x) age = x; void print(); Person(const Person &p);/拷贝构造函数,深拷贝;Person:Person(char *Name, int Age) na

22、me = new charstrlen(Name)+1; strcpy(name, Name); age = Age; coutconstructorendl;Person:Person() coutdestructorageendl; delete name;void Person:print() coutnamet The Address of name: nameendl;Person:Person(const Person &p) name = new charstrlen(p.name)+1; strcpy(name, p.name); age = p.age; coutCopy c

23、onstructorendl;int main() Person p1(zhang, 21); Person p2 = p1; p1.setAge(1); p2.setAge(2); p1.print(); p2.print();e.初始化列表构造函数可以采用成员初始化列表的方式对数据成员进行初始化。介于构造函数参数表后面的“:”与函数体之间的内容就是成员初始化列表,将括号中的初始值赋给该括号前的成员。常量成员、引用成员、类对象成员以及派生类构造函数对基类构造函数的调用等必须用初始化列表进行初始化,列表中的成员初始化次序与它们在类中的声明相同,构造函数初始化列表先于构造函数体中的语句执行。成员

24、初始化列表类似于:构造函数名(参数表): 成员1(初始值),成员2(初始值), 例 用初始化列表初始化Tdate的month和day成员#include using namespace std;class Tdate public: Tdate(int m, int d, int y); protected: int month, day, year;Tdate:Tdate(int m, int d,int y):month(m),day(d) year = y; coutmonth/day/yearendl;int main() Tdate bday(10, 1, 2003);例 常量和引用成员的初始化#include using namespace std;class A int x, y; const int i, j; int &k; public: A(int a, int b, int c):i(a), j(b), k(c), x(a) y = x; coutx = xty = yendl; couti = itj = jtk = kendl; ;int main() int m=6; A x(4, 5, m);四、 析构函数

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

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