为了账号安全,请及时绑定邮箱和手机立即绑定
  • (1)new运算符在创建对象的时候会自动调用构造函数 (2)malloc函数只是分配内存空间,而不会自动调用构造函数
    查看全部
    0 采集 收起 来源:[C++]对象指针

    2016-04-03

  • class Corrdinate { public: Corrdinate(); ~Corrdinate(); public: int m_iX; int m_iY; }; #include "Coordinate.h" #include <iostream> using namespace std; Corrdinate::Corrdinate() { cout << "Coordinate" <<endl; } Corrdinate::~Corrdinate() { cout << "~Corrdinate" <<endl; } #include <iostream> #include <stdlib.h> #include "Coordinate.h" using namespace std; int main(void) { //Corrdinate *p1 = NULL; //p1 = new Corrdinate; //Corrdinate *p2 = new Corrdinate(); //p1->m_iX = 10; //p1->m_iY = 20; //(*p2).m_iX =30; //(*p2).m_iY =40; //cout <<p1->m_iX +(*p2).m_iX <<endl; //cout <<p1->m_iY +(*p2).m_iY <<endl; //delete p1; //p1= NULL; //delete p2; //p2 = NULL; Corrdinate p1; Corrdinate *p2 = &p1; p2->m_iX = 10;//(*p2).m_iX = 10; p2->m_iY = 20;//(*p2).m_iY = 20; cout <<p1.m_iX <<endl; cout <<p1.m_iY <<endl; system("pause"); return 0; }
    查看全部
  • 浅拷贝就是直接将数据成员的值直接赋值过去,不包含指针就行,如果包含指针,就会把两个对象的指针指向了同一个内存空间,容易发生错误。
    查看全部
  • (1)如果数据成员中不包含指针的话就用浅拷贝构造函数就行 (2)如果包含了指针就需要用到深拷贝构造函数,即为该指针在堆上开辟一块内存空间。
    查看全部
  • #include <iostream> #include <stdlib.h> #include "Array.h" using namespace std; int main() { Array arr1(5); Array arr2(arr1); arr1.printArr(); arr2.printArr(); system("pause"); return 0; }
    查看全部
  • class Array { public: Array(int count); Array(const Array &arr); ~Array(); void setCount(int count); int getCount(); void printAddr(); void printArr(); private: int m_iCount; int *m_pArr; }; #include"Array.h" #include <iostream> using namespace std; Array::Array(int count) { m_iCount = count; m_pArr=new int[m_iCount]; for(int i=0;i<m_iCount;i++) { m_pArr[i]=i; } cout << "Array" <<endl; } Array::Array(const Array &arr) { m_iCount = arr.m_iCount; m_pArr =new int[m_iCount]; for(int i=0;i<m_iCount;i++) { m_pArr[i] = arr.m_pArr[i]; } cout <<"Array&" <<endl; } Array::~Array() { delete []m_pArr; m_pArr = NULL; cout <<"~Array" <<endl; } void Array::setCount(int count) { m_iCount = count; } int Array::getCount() { return m_iCount; } void Array::printAddr() { cout <<"m_pArr=" <<m_pArr <<endl; } void Array::printArr() { for(int i=0;i<m_iCount;i++) { cout << m_pArr[i] <<endl; } }
    查看全部
  • 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; }
    查看全部
  • 类的组合,先实例化对象,调用的是对象是数据成员的构造函数,然后再调用外类的构造函数;销毁是先调用,外类的析构函数,然后再调用内类的析构函数。
    查看全部
  • (1)堆中实例化的数组需要手动销毁释放内存. (2)在栈中实例化的数组,系统自动回收内存 (3)delete []p; //必须写[],不然系统只是销毁第一个数组中的对象元素
    查看全部
    0 采集 收起 来源:练习题

    2016-04-03

  • [0]的位置是相对于指针p指向而言,当p++;后,p[0]指向第二个元素! p经处理后可能已指向不是最初的内存地址,所以必须还原后才能delete
    查看全部
  • sizeof如果是两个int对象成员,则占8*2=16个内存单元,如果是两个指针的单元,则只占4*2=8个内存
    查看全部
  • 构造函数用默认的时,加不加括号都是对的
    查看全部
  • new会自动调用类的构造函数。
    查看全部
    0 采集 收起 来源:[C++]对象指针

    2016-04-03

  • 对象成员: 申请:先顺序实例化对象成员,最后实例化类对象。 释放:先销毁类对象,后将对象成员中最后实例化的释放,依次类推。
    查看全部
  • 深拷贝首先申请一段内存,然后将这段内存中每个值依次拷贝
    查看全部

举报

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

微信扫码,参与3人拼团

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

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