c++学习——(9)常对象成员和常成员函数

一、常对象成员

1.常对象成员的定义

      我们前面讲到过的,讲类的数据成员用const来修饰那么我们初始化的时候,直接初始化赋值是不对的,但是可以通过初始化列表来赋值。

     

       前面说的用const修饰的数据成员都是一些基本的数据成员,那么可不可以用const来修饰对象成员呢,答案是可以的我们把这种用const修饰的对象成员称为常对象成员我们还是用线段的例子。

那么我们初始化的时候就必须用初始化列表来进行初始化

 

二、常成员函数

1.常成员函数的定义

我们前面把用const修饰的对象成员称为常对象成员,那么用const修饰的成员函数我们就称为常成员函数

       将上面两个成员函数来定义一下:我们可以看到对于普通的changeX函数我们的定义是正确的,但对于常成员函数我们的定义就是错误的,为什么呢?我们看第二个图,其实我们的成员函数定义的时候是隐含着一个this指针的,当为常成员函数时就是const指针,通过常指针来改变指针指向的数据显然是错误的!

2.常对象与常成员函数

const是可以修饰对象的,即在实例化一个对象的时候用const来修饰,比如。

const Line line(1, 2, 3, 4);

值得注意的是常对象只能调用常成员函数,但是我们得普通对象即可以调用普通成员函数又可以调用常成员函数!

三.常指针和常应用

1.对象指针和对象应用

下图简单的说明了对象指针和对象的引用

2.常指针和常引用

      那么我们在使用const来修饰引用和指针时就是常指针和常引用了,但是我们在使用指针和引用的时候要注意,常引用和常指针同样只能调用常成员函数。

 

下面举一个更复杂的例子:下面我们的const在*右边,即顶层const我们的pCoor指针只能指向coor1不能改变指针指向的内容。那么下面的操作pCoor->getY()是正确的,因为指针指向的类并没有被const修饰是可以调用非常成员函数的。第二个操作改变了指针的指向明显是错误的!第三个操作也是正确的!

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值