Visual C++应用教程第1章C++基础1.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1.2类和对象 “-”是另一个表示成员的运算符,它与“.”运算符的区别是:“-”用来表示指向对象的指针的成员,而“.”用来表示一般对象的成员。 需要说明的是,下面的两种表示是等价的(对于成员函数也适用): 对象指针名-成员变量 (*对象指针名).成员变量 例如: CStuscore *two = one; cout(*two).getName()endl; // A couttwo-getName()endl; // 与A等价 需要说明的是,类外通常是指在子类(后面会讨论)中或其对象等的一些场合,对于访问权限public、private和protected来说,只有在子类中或用对象来访问成员时,它们才会起作用。在用类外对象来访问成员时,只能访问public成员,而对private和protected均不能访问。对类中的成员访问或通过该类对象来访问成员都不受访问权限的限制。 1.2类和对象 1.2.5 构造函数和析构函数 (1)构造函数 前面已提及,在类的定义中是不能对数据成员进行初始化的。为了能给数据成员设置某些初值,这时就要使用类的特殊成员函数——构造函数。构造函数的最大特点是在对象建立时它会被自动执行,因此用于变量、对象的初始化代码一般放在构造函数中。 C++规定,一个类的构造函数必须与相应的类同名,它可以带参数,也可以不带参数,与一般的成员函数定义相同,可以重载,也可以有默认的形参值。例如: 程序运行的结果为: 分析和说明: (1) 代码中,为类CPerson定义了3个重载的构造函数(程序中用A、B、C标明)。这些构造函数的重载必须按其规定进行定义:要么参数个数不同;要么参数个数相同,但参数类型不能相同。其中,构造函数CPerson(float h, float w = 120),不仅设置了形参w的默认值,而且还将该构造函数的声明在类中进行,其定义在类体外实现。 1.2类和对象 (2) 主函数main中,对象one的初始化等价于one.CPerson(DING),因而调用的是B构造函数,此时对象的私有数据成员name设定了初值“DING”,而height和weight初值没有指定,它们的初值取决于对象的存储类型,可能是默认值或无效值。 (3) 对象two的初始化等价于two.CPerson(170, 130),因而调用的是C构造函数,此时对象的私有数据成员height和weight初值分别设定为170、130,而name初值没有指定,它可能是默认值或无效值。 (4) 对象three的初始化等价于three.CPerson(DING, 170, 130),因而调用的是A构造函数,此时对象的私有数据成员name、height和weight初值分别设定为DING、170和130。 在C++函数声明时,自右向左可以为一个或多个形参指定默认的参数值,这样在调用时,可以不给出具体的实际参数值,而按其指定的默认值工作。如CPerson(float h, float w = 120)构造函数,在定义对象时,若有CPerson other(170)。则使得height = 170,而weight等于默认值120。 1.2类和对象 虽然构造函数的定义方式与一般成员函数没有什么区别,但要注意: ① 构造函数名必须与类同名。只有约定了构造函数名,系统在生成类的对象时,才能自动调用类的构造函数。 ② 定义的构造函数不能指定其返回值的类型,也不能指定为void 类型。事实上,由于构造函数主要用于对象数据成员的初始化,因而无须返回函数值,也就无须有返回类型。 ③ 若要用类定义对象,则构造函数必须是公有型成员函数,否则类无法实例化。若类仅用于派生其它类,则构造函数可定义为保护型成员函数。 ④ 当构造函数重载以及设定构造函数默认形参值时,要避免出现二义性。例如: CPerson(char *str, float h = 170, float w = 130) // A { strcpy(name, str); height = h; weight = w; } CPerson(char *str) // B

文档评论(0)

132****9295 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档