-
堆和栈中的定义方式查看全部
-
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指针;查看全部
-
取消 注释 快捷键 ctrl + k + u查看全部
-
control +k +c 注释掉选定的代码查看全部
-
={类名(xxx), 类名(zzz)};查看全部
-
对象 实例化时 从内往外 实例化 销毁是 恰恰相反 从外到内 销毁查看全部
-
class Coor { public: int x; int y; } int main () { Coor a[3]; Coor *p=new Coor [3]; return 0; } 1.a[0].x a[1].x a[2].x a->x (a+1)->x (a+2)->x 都是合法的 2.p[0].x p[1].x p[2].x p->x (p+1)->x (p+2)->x 也都是合法的 3.p++之后,p[0]表示的就是第二个元素了 4.a是无法做到a++操作的。否则Dev-C++编译器是会报[Error] lvalue required as increment operand的错误的查看全部
-
。。。查看全部
-
可以写成Coordinate*p1=NULL p1=new Coordinate查看全部
-
本节示例查看全部
-
数组在内存中的分配查看全部
-
指针名+索引.数据成员名查看全部
-
最后三分钟注意理解查看全部
-
类中指针的拷贝查看全部
-
内存上的分配查看全部
举报
0/150
提交
取消