qt里的一些语句不懂,和一个指针问题;求解释~~
QPainter*painter;QLabel*label;A*c;A是自己定义的类,这里是定义了类型为A*的指针c吗?painter=newQPainter(this)...
QPainter *painter;
QLabel *label;
A *c;A是自己定义的类,这里是定义了类型为A*的指针c吗?
painter = new QPainter(this);QPainter是qt自己定义的类,那这句话的意思是不是给painter申请一块qpainter类型的动态内存?
label = new QLabel();同上,为什么这句括号里没有了this?有this和没有this的区别?
c = new A(tr("/dev/video0"));A是定义好的类,这句话又是什么意思?
d = c->m();m是一个定义好的函数,这句话是什么意思?执行(c->m())后再把值赋给d?c->m()具体是什么意思?他是不是和c.m等价?对箭头操作符不太懂……
定义了两个指针 uchar *m;uchar * n;这里的m和n指向内存数据都较大,这里假定为20000个字节;m指向的内存的内容按一定的时间(假设为1s)更新(这里暂且不关心m指向的内存的数据是如何更新的,这里m指向是一个动态内存,更新的),现在我想让n指针指向的数据是m上一秒指向的内存,或者说是让n指针指向的内存所存储的数据与m上一秒指向的数据相同;只要m指向的内存数据一直在更新,这个操作就一直持续下去,我该如何编程?如何复制?是不是还要定义一个中间指针用于指的传递?或者说是用怎样的一个编程思想来实现?望得到高人指点~~最好有非常详细的解释说明~~ 展开
QLabel *label;
A *c;A是自己定义的类,这里是定义了类型为A*的指针c吗?
painter = new QPainter(this);QPainter是qt自己定义的类,那这句话的意思是不是给painter申请一块qpainter类型的动态内存?
label = new QLabel();同上,为什么这句括号里没有了this?有this和没有this的区别?
c = new A(tr("/dev/video0"));A是定义好的类,这句话又是什么意思?
d = c->m();m是一个定义好的函数,这句话是什么意思?执行(c->m())后再把值赋给d?c->m()具体是什么意思?他是不是和c.m等价?对箭头操作符不太懂……
定义了两个指针 uchar *m;uchar * n;这里的m和n指向内存数据都较大,这里假定为20000个字节;m指向的内存的内容按一定的时间(假设为1s)更新(这里暂且不关心m指向的内存的数据是如何更新的,这里m指向是一个动态内存,更新的),现在我想让n指针指向的数据是m上一秒指向的内存,或者说是让n指针指向的内存所存储的数据与m上一秒指向的数据相同;只要m指向的内存数据一直在更新,这个操作就一直持续下去,我该如何编程?如何复制?是不是还要定义一个中间指针用于指的传递?或者说是用怎样的一个编程思想来实现?望得到高人指点~~最好有非常详细的解释说明~~ 展开
1个回答
展开全部
1、A *c;A是自己定义的类,这里是定义了类型为A*的指针c吗?
这里表示定义了类A的对象指针
2、d = c->m();m是一个定义好的函数,这句话是什么意思?执行(c->m())后再把值赋给d?c->m()具体是什么意思?他是不是和c.m等价?对箭头操作符不太懂……
因为C是A类的对象指针(其实也是一个对象),所以c可以->m(); 其中m()应该是类A的一个成员函数吧,是的话就表示对函数的调用! c->m()不等价于c.m,而是等价于(*c).m() 。
至于d = c->m();应该是赋值语句,应为我没看你的源程序所以我无法给你解答具体的含义。
3、c = new A(tr("/dev/video0"));A是定义好的类,这句话又是什么意思?
因为c是A的一个对象指针,所以c = new A(tr("/dev/video0"));就表示为c 动态分配一个存储A类 类型数据的内存,并用tr("/dev/video0")对它进行初始化。
内存空间申请
new 有三种格式
1、new 数据类型;
2、new 数据类型(初始化值);
3、new 数据类型 [常量表达式];
例如:
int *p=new int;
float *p=new float;
Student *p=new Student; //Student 是学生类
*p =4; //通过指针访问申请的内存空间 他也等于int *p=new int(4);
cout<<*p<<endl; //则输出4
还有就是 char*str=new char[100];//申请100个字符空间的数组,并把首地址赋给字符指针
最后还要注意释放内存 delete[ ] str;
从你的问题可以看出你“对类与对象”,“指针与数组”,动态内存空间申请掌握的并不好,下去一定要找相关资料好好研读,不然你以后的课程会很难学!
这里表示定义了类A的对象指针
2、d = c->m();m是一个定义好的函数,这句话是什么意思?执行(c->m())后再把值赋给d?c->m()具体是什么意思?他是不是和c.m等价?对箭头操作符不太懂……
因为C是A类的对象指针(其实也是一个对象),所以c可以->m(); 其中m()应该是类A的一个成员函数吧,是的话就表示对函数的调用! c->m()不等价于c.m,而是等价于(*c).m() 。
至于d = c->m();应该是赋值语句,应为我没看你的源程序所以我无法给你解答具体的含义。
3、c = new A(tr("/dev/video0"));A是定义好的类,这句话又是什么意思?
因为c是A的一个对象指针,所以c = new A(tr("/dev/video0"));就表示为c 动态分配一个存储A类 类型数据的内存,并用tr("/dev/video0")对它进行初始化。
内存空间申请
new 有三种格式
1、new 数据类型;
2、new 数据类型(初始化值);
3、new 数据类型 [常量表达式];
例如:
int *p=new int;
float *p=new float;
Student *p=new Student; //Student 是学生类
*p =4; //通过指针访问申请的内存空间 他也等于int *p=new int(4);
cout<<*p<<endl; //则输出4
还有就是 char*str=new char[100];//申请100个字符空间的数组,并把首地址赋给字符指针
最后还要注意释放内存 delete[ ] str;
从你的问题可以看出你“对类与对象”,“指针与数组”,动态内存空间申请掌握的并不好,下去一定要找相关资料好好研读,不然你以后的课程会很难学!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询