-
执行第一个p++后,P的位置已经发生了改变,所以第二个p[0]就相当于指向堆中的第二个位置,继而p[1]==p[2];
查看全部 -
当执行第二个循环后,p没有指向开始时申请内存的位置了,所以要用一个p++重新将p地址指向申请内存的第一位。
查看全部 -
对象成员:一个对象作为另外一个类的数据成员
对象成员指针:一个对象的指针作为另外一个类的数据成员
1.对象成员指针的定义: 类名 * 指针名 是指针而不是对象
2.若存在对象成员指针1,2……。sizeof(指针1,指针2……)只计算各指针所
占内存的总和,不计算对象成员所占内存
对象成员指针如果在构造函数用 new 的方式从堆中申请内存实例化2个
Coordinate 对象,那这2个对象都是在堆中,而不在 Line 对象中,因为每个指
针占 4 个内存单元,因此 sizeof(Line) 只占 8 个内存单元,销毁 Line 的时
候,先销毁队中的内存,在释放 Line 本身的内存
查看全部 -
Coordinate * const pCoor = &coor1 : 这种方式定义的常指针“只能指向coor1,但可以调用coor1的不同的函数”;(拥有读写权限) const Coordinate *pCoor = &coor1 : 只能调用coor1的“常成员函数”。(只拥有读权限)
查看全部 -
为什么要用Array&
https://www.imooc.com/qadetail/100956
查看全部 -
mollac只分配空间,new还会调用构造函数。
查看全部 -
对象指针格式
查看全部 -
需要记录这个点
查看全部 -
实例化点--实例化线,销毁线--销毁点
查看全部 -
p[0]指向第一个元素;执行p++之后p[0]指向第2个了!!!<br>
2.释放内存时要注意指针 p 指回原来的位置。用delete释放数组内存时要注意此时的指针*p要指到该数组的第一个元素上。保证申请和释放的是同一段内存第二个循环第一次打印的是第三个元素因为指针经过p++到第三个元素了,所以得用p--
注意:在对象数组中,想要访问某个堆中的对象的成员属性时,p->m_ix=1;和p[0].m_ix=1效果是一样的,但是p[0]->m_ix=1这种用法是错误、以及注意 p++后 p[0] 前后的指向是不一样的
数组的头指针最好要保留,采用(p+1)->m_iX的方式访问,不会更改头指针
查看全部 -
定义一个坐标类,在栈上实例化坐标类常对象,并给出坐标(3,5),然后定义常引用、常指针,最后使用对象、引用、指针分别通过调用信息打印函数打印坐标信息。
打印结果如图
#include <iostream>
using namespace std;
class Coordinate
{
public:
Coordinate(int x, int y)
{
// 设置X,Y的坐标
m_iX = x;
m_iY = y;
}
// 实现常成员函数
void printInfo() const
{
cout << "(" << m_iX << "," << m_iY << ")" <<endl;
}
public:
int m_iX;
int m_iY;
};
int main(void)
{
const Coordinate coor(3, 5);// 创建常指针p
const Coordinate *p = &coor;
// 创建常引用c
const Coordinate &c = coor;
coor.printInfo();
p->printInfo();
c.printInfo();
return 0;
}查看全部 -
const [类型] * p类型常指针和常引用不能调用普通成员函数,只能调用常成员函数。
[类型] * const p 可以调用普通成员函数,但不能再次更改指向的变量。
查看全部 -
常对象只能调用常成员函数。
普通对象既可以调用普通成员函数,也可以调用常成员函数。
常成员函数不能改变成员的值(因为不传入this指针)
查看全部 -
指针常量 int * const p
常指针 int const * p
指针常量和常引用都可以看作常对象
查看全部 -
6:05处,常指针pcoor为何能指向普通成员函数getY(),不是说“常指针和常引用只能指向常成员函数”吗?
常指针与普通指针的区别在于隐含的this指针可读可写行,常指针中this指针只能读不能写,而普通的成员函数是即可读又可写的,因此常指针可以调用普通的成员函数。
最后一句:pCoor->printInof(); pCoor已经是常指针了呀,为什么还说它是读写权限呢,不应该是只读权限吗?
该指针定义的是 Coordinate * const pCoor = &coor1; 指针pCoor是常指针,只是它只能指向coor1,不能指向其他的对象,但是它的权限还是读写权限查看全部
举报