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

来源:互联网 发布:淘客数据采集器下载 编辑:程序博客网 时间:2024/05/16 10:22

一、类的声明

类的声明如下形式:

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)这个函数。
        这样做的好处是保证了每个对象可以拥有不同的数据成员,但处理这些成员的代码可以被所有对象共享。

0 0
原创粉丝点击