C++中的类定义

  类的基本思想是数据抽象和封装,数据抽象是一种依赖接口和实现分离的编程技术。

    类的接口包括用户所能执行的操作;类的实现则包括类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。

  封装实现了类的接口和实现的分离封装后的类隐藏了它的实现细节。

定义抽象数据类型

  引入this 

    成员函数通过一个名未this的额外隐式参数访问调用它的那个对象,当我们调用一个成员函数的时候,用请求该函数的对象地址初始化this,

     例如:total.isbn()    成员函数通过一个名为this.total的额外隐式参数来访问调用它的那个对象,当我们调用一个成员函数时,用请求该函数的对象地址初始化this,

     调用total.isbn() 编译器负责把total的地址传给isbn的隐式形参this,可以等价的认为编译器将该调用写成了  Sales_data :isbn(&total),   调用Sales_data的isbn成员时传入了total的地址       

      【Sales_data是类】

  引入const成员函数

    使用const的成员函数被称作常量成员函数。

    常量对象,以及常量对象的引用或指针都只能调用常量成员函数。

  

  类作用域和成员函数

    类本身就是一个作用域。成员函数定义嵌套在其之内。

  在类的外部定义成员函数

    成员名字需包含所属类名。

 

定义类相关的非成员函数

 

构造函数

  控制对象的初始化过程的函数叫构造函数。

    构造函数不能被声明为const。

  类通过一个特殊的构造函数来控制摸摸人初始化过程,这个函数叫做默认构造函数。默认构造函数无须任何实参。

  编译器创建的构造函数又被成为合成的默认构造函数。

  

  某些类不能遗留合成的默认构造函数

    notes: 只有当类没有声明任何构造函数时,便要一起才回自动的生成默认构造函数。

    notes2:如果类包含有内置类型或者复合类型的成员,则只有当这些成员全都被赋予了类内的初始值时,这个类才适合于使用合成的默认构造函数。

 

  =default的含义

    在c++11新标准中,若需要默认行为,可以通过在参数列表后面写上 =default来要求编译器生成构造函数。

      如:    Sales_data() = default;

  构造函数初始化列表

    notes: 构造函数不应该轻易覆盖掉类内的初始值,除非新赋的值与原值不同,如果不能使用类内初始值,则所有构造函数都应该显式地初始化每个内置类型的成员。

 

  在类的外部定义构造函数

    和在类外部定义成员函数相类似。

 

  拷贝、赋值和析构

  

 

 

  

 

posted @ 2019-03-25 20:42  Stephen_A  阅读(910)  评论(0编辑  收藏  举报