山西
400-650-7353
首页 > 计算机二级 > 【备考】C++考前辅导:私有数据成员的使用

【备考】C++考前辅导:私有数据成员的使用

2018-08-16 17:45:26 来源:互联网 荐:IT资料豪华升级版,点击加群领取

一、私有数据成员的使用

1.取值和赋值成员函数

面向对象的约定就是保证所有数据成员的私有性。一般我们都是通过公有成员函数来作为公共接口来读取私有数据成员的。某些时候,我们称这样的函数为取值和赋值函数。

取值函数的返回值和传递给赋值函数的参数不必一一匹配所有数据成员的类型。

#include iostream.h

class Date

{

int mo, da, yr;

public:

Date(int m,int d,int y) { mo=m; da=d; yr=y; }

int getyear() const { return yr; }

void setyear(int y) { yr = y; }

};

int main()

{

Date dt(4,1,89);

cout< dt.setyear(97);

cout< return 0;

}

上面的例子很简单,不分析了。要养成这样的习惯,通过成员函数来访问和改变类中的数据。这样有利于软件的设计和维护。比如,改变Date类内部数据的形式,但仍然用修改过的getyear()和setyear()来提供访问接口,那么使用该类就不必修改他们的代码,仅需要重新编译程序即可。

2.常量成员函数

注意上面的程序中getyear()被声明为常量型,这样可以保证该成员函数不会修改调用他的对象。通过加上const修饰符,可以使访问对象数据的成员函数仅仅完成不会引起数据变动的那些操作。

如果程序声明某个Date对象为常量的话,那么该对象不得调用任何非常量型成员函数,不论这些函数是否真的试图修改对象的数据。只有把那些不会引起数据改变的函数都声明为常量型,才可以让常量对象来调用。

3.改进的成员转换函数

下面的程序改进了从Date对象到CustomDate对象的成员转换函数,用取值和赋值函数取代了使用公有数据成员的做法。(以前的程序代码在上一帖中)

#include iostream.h

class CustomDate

{

int da,yr;

public:

CustomDate() {}

CustomDate(int d,int y) { da=d; yr=y; }

void display() const {cout< int getday() const { return da; }

void setday(int d) { da=d; }

};

class Date

{

int mo,da,yr;

public:

Date(int m,int d,int y) { mo=m; da=d; yr=y; }

operator CustomDate() const;

};

Date::operator CustomDate() const

{

static int dys[] = {31,28,31,30,31,30,31,31,30,31,30,31};

CustomDate cd(0,yr);

int day=da;

for(int i=0;i cd.setday(day);

return cd;

}

int main()

{

Date dt(11,17,89);

CustomDate cd;

cd=dt;

cd.display();

return 0;

}

注意上面的程序中Date::operator CustomDate()声明为常量型,因为这个函数没有改变调用它对象的数据,尽管它修改了一个临时CustomDate对象并将其作为函数返回值。

编辑推荐IT学习交流群:点击加群 571960479

加群备注:网站(限时赠送500G海量IT学习资料)

关注微信:山西优就业(ID:ujiuyesx)

回复:简历模板,即可领取

【各类行业的简历模板】

回复:安装包的名称,例:AI,即可领取

AI、DW、PS、AX、C4D等破解版软件

【小U将毕生绝学传授于你,打倒HR,轻松搞定CEO】

相关推荐:暑期IT镀金之行

【备考】C++考前辅导:析构函数和this指针

更多分享交流,礼品领取,海量干货,请扫描下方内部资料领取二维码,一不小心就爱上IT,成为了大佬!

免责声明:本文来源于网络,由网友提供或网络搜集,仅供个人交流学习参考使用,不涉及商业盈利目的。如有版权问题,请联系本站管理员予以更改或删除。谢谢合作!

热门标签: C++ 私有数据成员

猜你喜欢

推荐阅读