为了账号安全,请及时绑定邮箱和手机立即绑定
  • 为什么需要const成员函数? 我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值。如果把不改变数据成员的函数都加上const关键字进行标识,显然,可提高程序的可读性。其实,它还能提高程序的可靠性,已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。 const成员函数和const对象 实际上,const成员函数还有另外一项作用,即常量对象相关。对于内置的数据类型,我们可以定义它们的常量,用户自定义的类也一样,可以定义它们的常量对象。例如,定义一个整型常量的方法为: const int i=1 ; 同样,也可以定义常量对象,假定有一个类classA,定义该类的常量对象的方法为: const classA a(2); 这里,a是类classA的一个const对象,"2"传给它的构造函数参数。const对象的数据成员在对象生存期内不能改变。但是,如何保证该类的数据成员不被改变呢? 为了确保const对象的数据成员不会被改变,在C++中,const对象只能调用const成员函数。如果一个成员函数实际上没有对数据成员作任何形式的修改,但是它没有被const关键字限定的,也不能被常量对象调用。

    查看全部
  • (1)常对象只能调用常成员函数(最后面加const),或是公用的常数据成员 

    (2)私有的常数据成员,初始化要用成员初始化列表 

    (3)常成员函数,本质就是把this指针指向的变量变为常量,所以形如这样:this->a = 10;是错误的,因为this指向的量a是一个常量,不可以更改值。所以在常成员函数体中是不可以更改this指针指向的数据成员的值的

    (4)常成员函数中也不能调用普通成员函数,但是可以访问到私有的数据成员


    查看全部
  • https://img1.sycdn.imooc.com//5ae7e1600001694e10710562.jpg

    https://img1.sycdn.imooc.com//5ae7e1610001763f11230616.jpg


    查看全部
    • Athis指针无需用户定义,是编译器自动产生的。

      C当成员函数的参数或临时变量与数据成员同名时,可以使用this指针区分同名的数据成员。

      Dthis指针也是指针类型,所以在32位编译器下也占用4个基本的内存单元,即sizeof(this)的结果为4。


    查看全部
    0 采集 收起 来源:练习题

    2018-05-01

  • 对象各自的this指针指向各自对象的首地址,所以不同对象的this指针一定指向不同的内存地址

    查看全部
    0 采集 收起 来源:练习题

    2018-05-01

  • this指针的本质就是它所在对象本身的地址

    查看全部
  • https://img1.sycdn.imooc.com//5ae7db8700019afc11170593.jpg

    https://img1.sycdn.imooc.com//5ae7db89000100c814810730.jpg


    查看全部
  • return *this返回的是arr1的拷贝,是值传递,,并不是arr1。https://img1.sycdn.imooc.com//5ae7daf7000154b111570663.jpg

    查看全部
  • this指针的作用就是:解决了参数和数据成员重名的问题,让计算机清楚是参数传给了数据成员; this指针一般都是系统默认调用,以防止在实例化对象调用成员函数的时候出现错误,保证一一对应,当数据成员和构造函数中的形参名字相同是,计算机会分不清楚谁给谁赋值,这是需要人工加上this指针,用来区别。

    查看全部
  • 对象成员:一个对象作为另外一个类的数据成员

    对象成员指针:一个对象的指针作为另外一个类的数据成员

    1.对象成员指针的定义: 类名 * 指针名 是指针而不是对象

    2.指针在32位编译器和64位编译器下的结果(x64 与 x86)


    https://img1.sycdn.imooc.com//5acada5a0001e39013220642.jpg

    https://img1.sycdn.imooc.com//5acada5b0001da8213180630.jpg



    3.若存在对象成员指针1,2……。sizeof(指针1,指针2……)只计算各指针所

    占内存的总和,不计算对象成员所占内存

    对象成员指针如果在构造函数用 new 的方式从堆中申请内存实例化2个

    Coordinate 对象,那这2个对象都是在堆中,而不在 Line 对象中,因为每个指

    针占 4 个内存单元,因此 sizeof(Line) 只占 8 个内存单元,销毁 Line 的时

    候,先销毁队中的内存,在释放 Line 本身的内存


    查看全部
  • 深层拷贝的时候要把指针地址所指的内容一一拷贝

    查看全部
  • 实例化对象A时,如果对象A有对象成员B,那么先执行对象B的构造函数,再执行A的构造函数。

    C如果对象A中有对象成员B,那么销毁对象A时,先执行对象A的析构函数,再执行B的析构函数。

    D如果对象A中有对象成员B,对象B没有默认构造函数,那么对象A必须在初始化列表中初始化对象B。



    查看全部
    0 采集 收起 来源:练习题

    2018-04-30

  • 生成A--生成B--生成线段——销毁线段——销毁B——销毁A

    如果坐标类有一个默认构造函数,那么线段类在实例化的时候可以不使用初始化列表;如果坐标类的构造函数有参数,那么线段类在实例化的时候就必须使用初始化列表。


    查看全部
  • https://img1.sycdn.imooc.com//5ae5c2d50001856409730607.jpg

    https://img1.sycdn.imooc.com//5ae5c2d50001cbfe10310630.jpg

    https://img1.sycdn.imooc.com//5ae5c2dc0001ae0d12800720.jpg


    查看全部
    0 采集 收起 来源:[C++]对象成员

    2018-04-29

  • 先实例化点,再实例化线,先销毁线对象再销毁点对象


    查看全部
    0 采集 收起 来源:[C++]对象成员

    2018-04-29

举报

0/150
提交
取消
课程须知
本课程是C++初级课程 需要掌握C++语言基础语法 如果不太熟悉的话,可以观看: 《C++远征之起航篇》 《C++远征之离港篇》 《C++远征之封装篇(上)》
老师告诉你能学到什么?
1、对象数组的定义和使用 2、对象成员的定义和使用 3、深拷贝和浅拷贝 4、对象指针、对象引用的定义和使用 5、常对象指针、常对象引用、常成员函数的定义和使用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!