为了账号安全,请及时绑定邮箱和手机立即绑定
  • 1. 常对象只能调用常成员函数。 2. 普通对象可以调用全部成员函数。 3. 当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用this指针。 4. 当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针。 5. 在C++中,this指针被隐含地声明为: X *const this,这意味着不能给this 指针赋值;    在X类的const成员函数中,this指针的类型为:const X* const, 这说明this指针所指向的这种对象是不可修改的(即不能对这种对象的数据成员进行赋值操作); 6. 由于this并不是一个常规变量,所以,不能取得this的地址。 由于a是const对象,所以a只能调用类A中的常成员函数。 那么为什么会提示:“不能将this指针.....”的语句呢 因为对于c++的成员函数(当然不是静态成员函数),都会含有一个隐藏的参数,对于上例A中的int GetValue()函数,在编译后会变成: int GetValue(A * const this);  //不能修改this变量,但可以修改this指向的内容,即:this是常量指针。 而对于int GetValue()const ,编译后是: int GetValue(const A* const this);  只所以this指针是const类型,从编译后的结果看就很清楚了, 因为a是const,所以其this指针就对应: const A* const this ; 而print函数被编译出来后对应的是void print(A* const this); 在进行参数匹配时, 所以就会提示 “不能将“this”指针从“const A .." this指针的出现就解释了,用哪一个对象的数据成员。通常情况下,this指针是隐含存在的,也可以将其显示的表示出来(即如上例中的 this->mValue。不过this指针只能在类中使用) 还有就是  this指针是一个const指针;
    查看全部
  • Array printInfo();要求返回值类型是一个对象,而Array Array::printInfo(){return *this}的返回值就是一个对象。 this指针系统会自己加 Array Array::printInfo(){return *this;}返回出去之后的*this指针是一个临时的对象,并不是arr1 Array& Array::printInfo(){return *this;}这样返回出去的就是arr1(即当前创建的对象)了。 加入引用之后,一切都清晰起来了 使用点号可以将多个方法穿起来使用 如果用的是&,返回值要加*,即为*this,使用函数是用点号 如果用的是*,即为指针,返回值不用加* ,即为this,使用函数是用-> 1.可用this指针做返回 2.*this对象做返回与引用Array &配合 都可对原对象做操作
    查看全部
  • this的值是对象本身地址;*this 就是对象arr1 1、 Array ... return *this 相当于: Array arrX = arr1; arrX是一个新的对象。即返回的this指针为另一个临时对象 2、 Array& ... return *this 相当于: Array & arrX = arr1; 此时arrX是arr1的别名。 3、 Array* ... return this 相当于: Array* arrX = this; 此时arrX的值 是地址,且是指向arr1的。用->访问或者*p. 访问
    查看全部
  • 坐标类如果有默认构造函数,初始化线段类对象时不需要初始化列表
    查看全部
  • This 表示对象的地址,可以访问到自身对象的数据成员 This 代表当前自身的对象,谁调用 Array 构造对象,然后 This 就代表那个对象取代那个对象,也就是 Array arr1; Array arr1;arr1.setLen(5)的时候,{this -> len = len} 中 this 就是代表了 arr1 对象,会取代 this ,而 this 其实是对象的地址,也就是指针,{this -> len = len} 就代表是 { arr1.len = len; },从而标记区别了数据成员和参数。 每次调用成员函数 时其实都是用的this 指针, 编译器会自动帮我们完成这一步(因为所有的都会用到 this
    查看全部
    0 采集 收起 来源:[C++]this指针

    2018-03-22

  • 在释放内存后,要将相关指针置为NULL. 这样可以防止后续对该指针进行操作时出错
    查看全部
  • 还没看这里!记得看!
    查看全部
    0 采集 收起 来源:开篇案例

    2017-04-10

  • 其他类作为成员变量(private)
    查看全部
  • 初始化列表 类名:初始化值{}
    查看全部
    0 采集 收起 来源:[C++]对象成员

    2017-04-10

  • 对象成员指针 实例化 Line 的时候,先调用 Coordinate 构造函数,再调用 Line 构造函数,销毁的时候,先销毁堆中的对象即 Coordinate 对象,再销毁 Line 对象。跟对象成员有区别,对象成员会先销毁 Line 对象,再销毁内层的 Coordinate 对象。
    查看全部
  • 1.对象指针:类名 * 指针名 = new 类名 2.C语言的malloc与C++的new都具有申请新内存空间的作用,但是new会调用对象的构造函数,而malloc不会调用 3. C++在new时的初始化的规律可能为:对于有构造函数的类,不论有没有括号,都用构造函数进行初始化;如果没有构造函数,则不加括号的new只分配内存空间,不进行内存的初始化,而加了括号的new会在分配内存的同时初始化为0
    查看全部
    0 采集 收起 来源:[C++]对象指针

    2017-04-09

  • http://img1.sycdn.imooc.com//58c9e5460001996f12800720.jpg
    查看全部
  • 深拷贝:当有指针的时候进行拷贝会使指针指向同一块内存,arr1修改值会使内存中的值发生改变,arr2修改值也会使内存中的值发生改变,致使arr1和arr2的值相同。释放内存时去释放指针也将会出现问题,计算机会崩溃。 我们要的是拷贝值,而不是使指针指向相同的内存。 当进行对象拷贝时不是简单的进行值的拷贝,而是将堆中内存的数据也进行拷贝,这种拷贝模式即为深拷贝。 拷贝构造函数是为了对象之间初始化赋值的,浅拷贝将新对象再一次指向了旧对象分配的内存单元,释放时容易崩溃。而深拷贝采用新的内存申请和循环赋值可以避免重复使用一个块内存。 地址拷贝-----浅拷贝 值拷贝-------深拷贝
    查看全部
  • 常指针/常引用,可调用常成员函数
    查看全部
  • return *this;返回类型为lei或者类引用 return this;为类*
    查看全部

举报

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

微信扫码,参与3人拼团

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

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