注意函数的执行顺序,析构函数是最后才调用的,调用时会执行内部释放对象成员指针的语句,所以,成员对象指针会先进行析构释放,然后才是coordinate的对象
宁外请注意:
对象成员如果无默认构造函数则必须在当前对象构造函数后使用初始化列表进行初始化,此时构造函数顺序为对象成员的构造函数coordinate,当前对象的构造函数line。
对象成员指针,则应该在当前对象的构造函数中调用本身的构造函数初始化,此时构造函数调用顺序为当前对象的构造函数line,对象成员指针的构造函数coordinate。
宁外请注意:
对象成员如果无默认构造函数则必须在当前对象构造函数后使用初始化列表进行初始化,此时构造函数顺序为对象成员的构造函数coordinate,当前对象的构造函数line。
对象成员指针,则应该在当前对象的构造函数中调用本身的构造函数初始化,此时构造函数调用顺序为当前对象的构造函数line,对象成员指针的构造函数coordinate。
2019-09-01
最新回答 / 慕沐45833
在Line.h中,Coordinate m_coorA;Coordinate m_coorB; 仅仅是申明这个line类有这个成员,并没有实例化,所以并没执行构造函数,只有实例化时才执行构造
2019-08-31
最赞回答 / 慕运维3124395
所有对象成员没有默认构造函数就都得使用初始化列表进行初始化,因为没有默认构造函数就没有办法初始化赋值。当你设置了默认构造函数之后,系统在你初始化对象的时候就会使用你设置的默认构造函数,而不会使用系统自己定义的。默认构造函数的要求是无参数,或者参数全为默认值。
2019-08-18
已采纳回答 / 慕运维3124395
1.2均不合法,3存在语法错误数组符号代表进行一次访问,1中p[1]代表访问到了第二个对象,此时再用->再次访问就不合理了;p中存放的地址是第一个对象的,p+1代表第二个对象的地址,此时p+1还未进行访问操作,直接使用.取成员依旧是不合理的;同理p+1代表一个指针存放第二个对象的地址,可以进行访问拿到m_x这个成员,但是p+1应该加上小括号,因为->的优先级高于+;
2019-08-18
Coordinate的指针原型不是Coordinate *this;而是Coordinate *const this;
2019-08-15
已采纳回答 / AlexPan0610
视频中的代码是 cout << "arr.m_iCount" << arr.getCount() << endl;虽然提示信息写的是"arr.m_iCount",实际访问的方法是arr.getCount()。
2019-08-06
最新回答 / 慕码人8215885
m_coorA是Coordinate的对象,而line公共继承了Coordinate这个类,所以line类的成员函数setA()可以访问基类Coordinate的成员函数setX(),setY()
2019-07-31
最新回答 / weixin_慕UI0048803
父类下面有很多子类,需要使用相同代码调用不同子类的方法,此时就会遇到别人操作自己的内存,建议了解以下设计模式,对这个视频将会更好理解
2019-07-28