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

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

全部评论

相关推荐

06-15 18:44
黄淮学院 Java
Lynn012:如果是居民楼还是算了吧,看着有点野呢
点赞 评论 收藏
分享
05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 18:02
好不容易拿到了字节Offer,鼠鼠做后端的,但家里人觉得可能被裁员不稳定,让鼠鼠去投国企,现在好纠结到底该咋选
文档传偷助手:该投就投吧,不过建议别放弃offer 拿到手里的才是最好的
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务