为了账号安全,请及时绑定邮箱和手机立即绑定
  • return返回的是副本,所以这里的返回值要是引用类型
    查看全部
  • 堆中开辟的对象数组,要delete []p; 若不加[],则在销毁时只销毁第一个元素
    查看全部
  • 在堆中实例化对象数组 Coordinate *p = new Coordinate[3]; p指向第一个对象,p->同于p[0]. p+1指向第二个,p+1-> 同于p[1].
    查看全部
    0 采集 收起 来源:[C++]对象数组

    2018-03-22

  • 在栈上实例化对象数组 Coordinate co[3]; 在堆中实例化对象数组Coordinate *co = new Coordinate[3]; //在堆中实例化要delete [];将指针置空
    查看全部
    0 采集 收起 来源:[C++]对象数组

    2017-03-17

  • 一个对象可以有多个对象常引用
    查看全部
    0 采集 收起 来源:练习题

    2017-03-16

  • Coordinate * const pCoor = &coor1 : 这种方式定义的常指针“只能指向coor1,但可以调用coor1的不同的函数”;(拥有读写权限) const Coordinate *pCoor = &coor1 : 只能调用coor1的“常成员函数”。(只拥有读权限)
    查看全部
  • 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指针;
    查看全部
  • 1、this指针无需用户定义,是编译器自动产生的。 2、同一个类的两个对象的this指针指向不同位置的内存:对象各自的this指针指向各自对象的首地址,所以不同对象的this指针一定指向不同的内存地址 3、当成员函数的参数或临时变量与数据成员同名时,可以使用this指针区分同名的数据成员。 4、this指针也是指针类型,所以在32位编译器下也占用4个基本的内存单元,即sizeof(this)的结果为4。
    查看全部
    2 采集 收起 来源:练习题

    2017-03-16

  • 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; },从而标记区别了数据成员和参数。
    查看全部
    0 采集 收起 来源:[C++]this指针

    2018-03-22

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

    2017-03-16

  • class Array { public: Array(); Array(const Array &arr); ~Array(); void setCount(int count); int getCount(); private: int m_iCount; }; #include"Array.h" #include <iostream> using namespace std; Array::Array() { cout << "Array" <<endl; } Array::Array(const Array &arr) { m_iCount = arr.m_iCount; cout <<"Array&" <<endl; } Array::~Array() { cout <<"~Array" <<endl; } void Array::setCount(int count) { m_iCount = count; } int Array::getCount() { return m_iCount; } #include <iostream> #include <stdlib.h> #include "Array.h" using namespace std; int main() { Array arr1; arr1.setCount(5); Array arr2(arr1); cout << "arr2.m_iCount="<<arr2.getCount() <<endl; system("pause"); return 0; }
    查看全部
  • 深拷贝:当有指针的时候进行拷贝会使指针指向同一块内存,arr1修改值会使内存中的值发生改变,arr2修改值也会使内存中的值发生改变,致使arr1和arr2的值相同。释放内存时去释放指针也将会出现问题,计算机会崩溃。 我们要的是拷贝值,而不是使指针指向相同的内存。 当进行对象拷贝时不是简单的进行值的拷贝,而是将堆中内存的数据也进行拷贝,这种拷贝模式即为深拷贝。 拷贝构造函数是为了对象之间初始化赋值的,浅拷贝将新对象再一次指向了旧对象分配的内存单元,释放时容易崩溃。而深拷贝采用新的内存申请和循环赋值可以避免重复使用一个块内存。 地址拷贝-----浅拷贝 值拷贝-------深拷贝
    查看全部
  • 如果坐标类有一个默认构造函数(即不带参数的构造函数),那么在实例化线段对象的时候,不使用初始化列表。 如果坐标类要求必须有参数传入,那么在实例化线段类的时候,必须用初始化列表讲相应的值传递给坐标类 实例化Line时,要先实例化m_coorA和m_coorB,但是这两个对象没有默认构造函数,所以要用初始化列表。(初始化列表执行 在构造函数之前!!!) 如果Coordimate类有默认构造函数,也就是不带参数的构造函数,那么Line类就可以不使用初始化列表。如果只有带参数的构造函数,那么必须用初始化列表
    查看全部

举报

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

微信扫码,参与3人拼团

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

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