C++ 学习笔记(3)this指针
存储
CGoods c1,c2...cn;
数据自己单独存储,但是方法可以公用,即函数只需存储一份,节省空间。
方法共享,但是不知道是哪一个对象。
this指针
即使对象名一样,用this指针依旧可以赋值。this指针代表当前对象的地址。
this是一个常量,不能对它进行赋值。this = NULL;也是不允许的。
class CGoods{
public:
void RegisterGoods(char Name[],int Amount, float Price){
strcpy(this->Name,Name);
this->Amount = Amount;
this->Price = Price;
}
private:
char Name[21];
int Amount;
float Price;
float Total_value;
}
编译器对类的识别顺序
1.先识别类
2.识别数据成员(分公有,私有)
3.识别函数,改写函数
因此,成员放在前面后面都可以,通常放后面。
C语言看到的函数,就是实际上执行的函数。但是C++执行的函数,并不是看到的函数。
CGoods c1,c2;
//c1.RegisterGoods(&c1,"C++",10,12);
c1.RegisterGoods("C++",10,12); //看到的是这个函数,实际上执行的函数是上面这个
char name[20];
//GetName(&c1,name);
c1.GetName(name); //看到的是这个函数,实际上执行的函数是上面这个
const
封锁的东西叫常量
const int * p;
int const * p;
//两者等价,const在 * 的左边,const封锁的是*p
int * const p;
//const在 * 的右边,const封锁的是指针p自己,不能修改自己的指向
const int * const p;
//const在 * 的两边,*p既不能更改,p也不能更改
举例
int a = 10;
const int * p = &a; //p指向a空间,封锁的是*p,不能通过p指针改变所指的空间(不能修改a的值)
int * const p = &a; //p指向a空间,封锁的是p,能通过p指针改变所指的空间(能修改a的值),但不能指向别的空间
const int * const p = &a; //p指向a空间,封锁的是*p和p,只能读取空间数据,指向和值都不能修改
版权声明:本文为博主原创文章,如有错误,恳请大家在评论区指出,在下不胜感激~如要转载注明出处即可~