钱能C++语言读书笔记(七)

钱能C++语言读书笔记(七)

 

1、  常成员函数(const Member Functions)

成员函数的操作,如果只对对象进行读操作,则该成员函数可以设计为常(const)成员函数。设计为常成员函数的好处是让使用者一目了然就知道该成员函数不会改变对象值。同时让类的实现者更方便地调试,因为在常成员函数中,任何改变对象值的操作都将被编译器豪不留情地认定为错误。设计成常成员函数,与其说是使类的实现者更方便地调试,还不如说更方便软件设计师控制软件质量,尽量不让类产品有意外的失措,经验之谈是:能够成为常成员函数的,应尽量写成常成员函数形式。

        常成员函数的声明和定义形式上必须是一致,即在函数形参列表的右括号后面加上const。常成员函数的设计理念,更多的是让应用型编程者准确快速地明了成员函数的意义。

2、  在类中声明静态成员函数, 要在成员函数名前加上关键字static。静态成员函数并不受对象的牵制,可以用对象名调用静态成员函数,这时候,将它看做是某一个名空间的一个函数,可以在没有任何对象捆绑的场合下访问静态成员的。

静态成员函数的实现位置与成员函数的实现位置应该是在一起的,静态成员函数,

如果不在类中实现,而在类的外部实现时,类名前应免去static关键字。成员函数的静态性只在的第一次声明的时候才是必要的。

Demo代码如下:

 

运行结果如下:

因为静态成员函数可以不捆绑对象的形式调用,静态成员函数调用时,没有当前对象的信息,所以静态成员函数不能访问数据成员,如果

static int printNumber() 

{

        cout << number << " total number" << endl;

}

改成:

static int printNumber()

{

cout << name << " " << number << " total number" << endl;

}

则编译通不过,这并不是说它没有私有函数的访问权限,如果给该静态成员函数传递一个Student对象:

static int printNumber(Student & s)

{

cout << "my name is " << s.name << endl;

cout << s.number << " total number" << endl;

}

那么访问私有数据便有它的权利。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值