存储

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,只能读取空间数据,指向和值都不能修改

版权声明:本文为博主原创文章,如有错误,恳请大家在评论区指出,在下不胜感激~如要转载注明出处即可~