- 1、本文档共72页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.8.1对象的赋值 P98 3.8.2对象的复制 可以在定义一个对象的时候用另一个对象为其初始 化,即构造函数的参数是另一个对象的引用,这种 构造函数常为完成拷贝功能的构造函数。 Box box2(box1); //用已知对象box1去克隆新对象box2. Box box2 = box1;//用“=”代替“()”号,实现复制。 特点: 1.拷贝构造函数与类同名,也是一种构造函数,没有返回类型。 2.拷函只有一个参数,并且是对某个对象的引用。 3.每个类都必须有一个拷函。 完成拷贝功能的构造函数的一般格式为: ClassName::ClassName(ClassName 变量名) { ...... // 函数体完成对应数据成员的赋值 } 调用时机: 3.函数的返回值是类的对象。 Box f() { Box box1(12,15,18); return box1; } int main() { Box box2; box2 = f(); } 类模板 P112 第四章 运算符重载 有关友元函数的使用,说明如下: 友元函数不是类的成员函数 友元函数近似于普通的函数,它不带有this指针,因此必须将对象名或对象的引用作为友元函数的参数,这样才能访问到对象的成员。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 友元函数与一般函数的不同点在于: 友元函数必须在类的定义中说明,其函数体可在类内定义,也可在类外定义; 它可以访问该类中的所有成员(公有的、私有的和保护的),而一般函数只能访问类中的公有成员。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. class A{ float x,y; public: A(float a, float b){ x=a; y=b;} float Getx(){ return x; } float Gety(){ return y; } float Sum(){ return x+y; } friend float Sum(A ); }; float Sumxy(A a){ return a.Getx()+a.Gety(); } float Sum(A a){ return a.x+a.y; } void main(void) { A t1(1,2),t2(10,20), t3(100,200); coutt1.Sum()endl; coutSum(t2)endl; coutSumxy(t3)endl; } 成员函数 友元函数,可以直接调用类中私有成员 普通函数,必须通过公有函数访问私有成员 对象调用成员函数 调用友元函数 调用一般函数 友元函数 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 友元函数不受类中访问权限关键字的限制,可以把它放在类的私有部分,放在类的公有部分或放在类的保护部分,其作用都是一样的。换言之,在类中对友元函数指定访问权限是不起作用的。 友元函数的作用域与一般函数的作用域相同。 谨慎使用友元函数 通常使用友元函数来取对象中的数据成员值,而不修改对象中的成员值,则肯定是安全的。 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 大多数情况是友元函数是某个类的成员函数,即A类中的某个成员函数是B类中的友元函数,这个成员函数可以直接访问B类中的私有数据。这就实现了类与类之间的沟通。 注意:一个类的成员函数作为另一个类的友元函数时,应先定义友元函数所在的类。 class A{ ... void fun( B ); }; class B{ ... friend void fun( B ); }; 既是类A的成员函数 又是类B的友元函数 Evaluation only. Created with Aspose.Slides for .NET 3.5 Cl
文档评论(0)