第一范文网 - 专业文章范例文档资料分享平台

C++语言程序设计实验答案 - 数据的共享与保护 - 图文 

来源:用户分享 时间:2025/5/16 9:23:20 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

.

float dist(Point &p1,Point &p2){//友元函数实现 double x=double(p1.x-p2.x);//通过对象访问私有数据成员 double y=double(p1.y-p2.y); return static_cast(sqrt(x*x+y*y)); } void main(){ Point myp1(1,1),myp2(4,5); cout<<\距离是:\ cout<

若A类为B类的友元类,则A类的所有成员函数都是B类的友元函数,都可以访问B类的私有和保护成员。 class B { ... //B类的成员声明 friend class A;//声明A为B的友元类 ... }; 声明友元类,是建立类与类之间的联系,实现类之间数据共享的一种途径。 在UML中,两个类之间的友元关系是通过<>构造型依赖来表征。

图5-5 类A和类B友元关系的UML图

B <> A – x : int +display() : void +getx() : int -a +set(i : int) : void +display() : void #include using namespace std; class A{ public: .

.

void display(){ cout<

第三,友元关系是不被继承的。

5.5 共享数据的保护P163

5.5.1 常对象

声明格式: const 类型说明符 对象名; 或 .

.

类型说明符 const 对象名; 常对象必须进行初始化,且不能被更新。 语法如何保障常对象的值不被改变呢?

改变对象的数据成员值有两个途径:

一是在类外通过对象名访问其公有数据成员,这时语法会限制不能再赋值。

二是在类的成员函数中改变数据成员的值,规定不能通过常对象调用普通的成员函数。

5.5.2 用const修饰的类成员P164

1. 常成员函数

声明格式: 类型说明符 函数(参数表)const; 注意: ① const是函数类型的一个组成部分。

② 常成员函数不能更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数。

③ 常对象只能调用它的常成员函数。 ④ const可用于对重载函数的区分。

例如,

void print();

void print() const; 这是对print的有效重载。

在UML中,常成员函数前添加<>。 例5-7 常成员函数举例。

图5-6 包含常成员函数的R类的UML图

R – r1 : int – r2 : int +R(rr1 : int, rr2 : int) +print() : void <>+print() : void #include using namespace std; class R{ public: R(int rr1,int rr2):r1(rr1),r2(rr2){} .

.

void print(); void print() const;//常成员函数 private: int r1,r2; }; void R::print(){ cout<

类的成员数据也可以是常量。

使用const说明的数据成员为常数据成员。 任何函数中都不能对常数据成员赋值。

构造函数对常数据成员进行初始化,就只能通过初始化列表。 在UML中,常数据成员前添加const。 例5-8 常数据成员举例。

图5-7 包含常数据成员的A类的UML图

A – a : const int – b : const int=10 +A(i : int) +print() : void #include using namespace std; class A{ public: .

.

A(int i); void print(); private: const int a;//常数据成员 static const int b;//静态常数据成员 }; const int A::b=10;//静态常数据成员在类外说明和初始化 A::A(int i):a(i) { }//常数据成员只能通过初始化列表来获得初值 void A::print(){ cout<

常引用的说明形式: const 类型说明符 &引用名; 常引用所引用的对象不能被更新。 若用常引用做形参,便不会发生对实参意外的更改。

例5-9 常引用做形参

#include #include using namespace std; class Point{//Point类定义 public: Point(int xx=0,int yy=0):x(xx),y(yy){} int getX(){ return x; } .

C++语言程序设计实验答案 - 数据的共享与保护 - 图文 .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c2rdeg2ieb99lpyv23wwc1symv1jox50077u_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top