C++学习:类与对象(二)

参考书籍:《c++程序设计》张军编著 第七章,实际为笔记,哈哈

本篇文章主要讲了一些为了简化编码,节约内存,数据安全性 时,类与对象所涉及到的一些技术。并有程序加以运行验证,大多来自参考数据,自己有所添加。

1.this 指针

我们知道,class类有有函数,然后实例化的对象会对应的函数(实际上相当于调用了函数)。

比如上文提到的Clock myClock1,myClock2,各自独立存放在内存的数据区,每个内存单元互不干涉。而成员函数在代码区只有一个靠背,并且函数存放在代码区里,也就是说在物理内存上,对象的数据和处理对象的函数是分离的。

既然函数的位置是只有一个,不同对象调用函数是怎么知道其位置的呢?

为了正确找到对象的地址,系统会自动产生一个指针(tihs指针)指向当前对象。

比如调用成员函数:myClock2.setShow();  实际上是这样的:setShow(&myClock2);

将对象myClock2的地址传给形参this指针,然后通过this指针找到相应的对象。

但是,这些系统自己都会做啊,我们学this指针有什么用呢?

问题是:当形参名与数据成员名相同时,我们为了区别,这里必须使用this指针。

比如:

void Clock:;setTime(int hour, int minute,int second)

{

    this->hour=hour;
    this->minute=minute;
    this->second=second;
}

附录:

C++的使用中我们经常会用到.和::和:和->,在此整理一下这些常用符号的区别。

  1. A.B则A为对象或者结构体;
  2. A->B则A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针;
  3. ::是作用域运算符,A::B表示作用域A中的名称B,A可以是名字空间、类、结构;
  4. :一般用来表示继承;

2.类的静态成员

全局变量在程序的整个运行期间都要占用内存空间,并带来数据安全性问题。

所以我们想节约空间,就会减少使用全局变量,比如把它写在类里面。

比如我们建个学生类,

class Student

{

public:

      int   num;  // 学生编号 

      int    count;   //统计学生人数

}

Student student1;

c++里查看内存空间占用字节多少,是用sizeof()函数,

可是我们这样有个问题;

count是和学生这个类有关的量,一个对象决定不了这个值,它和对象们有关。

如果我们这样来存储 count,很明显 sizeof(student1)=8,对象一多,就会很占用内存。

这时候,静态成员   横空出世

class Student
{
public:
      int   num;  // 学生编号 
      static int    count;   //统计学生人数
}
int Stident::count=0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值