五、类与对象(一)内联成员函数、成员函数重载、类和结构体、this指针

一、类的声明

类的声明如下形式:

class 类名称
{
   public:
             //公有成员(外部接口)类与外部的接口,任何外部函数都可以访问公有类型数据和函数。</span>
   private:
             //私有成员,只允许本类中的函数访问,而类外部的任何函数都不能访问。</span>
   protected:
             //保护成员,与private类似,其差别表现在继承与派生时对派生类的影响不同</span></span>
};
  二、数据的抽象和封装

        数据抽象是一种依赖于接口和实现分离的编程(和设计)技术。类设计者必须关心类是如何实现的,但使用该类的程序员不必了解这些细节。使用者只要抽象地考虑该类型做什么,而不必具体地考虑该类如何工作。
封装是一项将低层次的元素组合起来形成新的、高层次的实体的技术。函数是封装的一种形式:函数所执行的细节行为被封装在函数这个更大的实体中。被封装的元素隐藏了它们的实现细节——可以调用函数,但是不能直接访问函数所执行的语句。同样地,类也是一个封装的实体:它代表若干成员的聚集,设计良好的类隐藏了类实现的细节。

三、内联成员函数

内联函数已经在这里讲过点击打开链接,这里在总结一下:

  • inline关键字必须和函数定义结合在一起,否则编译器会直接忽略内联请求
  • 内联函数在编译时直接将函数体插入函数调用的地方
  • 因为函数是直接插入,所以函数不存在具体的地址,因此不能对函数进行取址操作
  • inline只是一种请求,编译器不一定允许这种请求

  • 内联函数省去了普通函数调用时压栈,跳转和返回的开销

四、成员函数的重载及其缺省参数
        重载和缺省参数已经讲过这里,情况类似
五、类与结构体
        在C++中,class与struct的唯一的区别是:在未指定访问权限时,class默认的是私有的,struct默认是公有的。

六、隐含的this指针
        在C++中,成员函数虽然是定义在类中的,但是成员函数并不占用对象的存储空间,成员函数会经过name magling的处理这里然后 放在代码段。那么对象是如何能调用成员函数的呢?这是因为成员函数有一个隐含的附加形参,即指向该对象的指针,这个隐含的形参叫做this指针。也就是说我们调用stu.getAge();等价于调用getAge(Stu *this)这个函数。
        这样做的好处是保证了每个对象可以拥有不同的数据成员,但处理这些成员的代码可以被所有对象共享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值