c++PrimerPlus第十章

OOP面向对象的编程特性:1.抽象 2.多态3.封装和数据隐藏4.继承 5.代码的重用性

用户定义类型就是实现抽象接口的类设计。

类型:1.确定内存存储的大小。2.如何解释存储中的位 3.对类型的操作或者方法

类有两部分:类声明,类方法定义。这两部分通常放在不同的文件夹中。

类名的首字母通常大写。

访问控制:private,public。对象的私有成员可以有公有成员和友元函数访问。class当中默认的访问控制是private

成员函数:可以在类声明中定义,也可以在外部定义。

数据隐藏:1.类中的私有数据。2.类中的私有函数 3.将类声明和类的方法定义放在不同文件当中。

class作用:

  • 是类的标识。
  • 可以用来定义模板。(通常使用typename)
  • class用来定义enum枚举值得占用空间
enum class:short {main}

类和结构很像:区别在于类访问控制默认是private,而结构的默认访问控制是public。

定义在类内部的函数并默认为内联函数。

内联函数可以进行多次定义。

在OOP调用成员函数:被称作是传递消息。

对于类的不同对象:他们拥有不同的数据,但是共享同一组方法(即方法只有一个副本)

构造函数和析构函数:

在创建对象的时候,一定调用构造函数。

构造函数:构造函数没有返回类型。构造函数当中不能将参数名设置成成员名。

1.当没有定义构造函数的时候,系统会生成默认构造函数。

2.当有显示定义的时候,不会生成:所以需要创建默认构造函数。这有两种方法:1.写一个默认构造函数。2.将显示定义的构造函数的参数都给上默认值。

析构函数:没有参数,没有返回类型。

对象的初始化操作:

Stock是一个类,其构造函数为Stock(const char * a,int num = 0,double num = 0.0);
Stock();
// 显示初始化
Stock first_class = Stock("123"); // 该方法可能会建立临时对象,然后进行赋值操作
Stock second_class("123");
Stock thirst_class();
// 隐式初始化
Stock thirst_class;

// c++11中的列表初始化
Stock first_class = {"123"};
Stock first_class {"123"};

// 当构造函数只有一个变量的时候(假设Stock(int n))
Stock forth_class = 3;

// 对象数组的初始化
Stock ab[2] = {Stock("123",1,3),Stock("123")}

自动变量存在栈当中:所以对于对象来说其释放时,后定义的先调用析构函数。

尽量使用初始化来给对象初始值,(这样的效率更高)。

类方法不修改隐式定义的数据:则定义时: int change() const;这样说明类方法不修改隐藏数据。

在声明对象的时候使用const,则不能调用没有声明const的方法。

class Sale
{
    void show();
}
const Sale a;
a.show();  // 不能使用

class Sale
{
    void show() const;  // 意味着不能修改调用对象中的隐藏数据。
};

a.show(); // 可以使用

this指针:对用方法的对象的地址。方法默认的参数。

对象数组的初始化流程:1.首先调用默认构造函数,初始化元素。2.然后利用{}中的构造函数创建临时对象。3.将临时对象赋给数组元素。

类定义的时候不会分配存储空间:所以其中的符号常量实现方法:

1.利用enum枚举实现。  2.利用static实现。  这两种方法创建的是类作用域当中的数据,但是并不会在类的对象当中。

类作用域中的枚举:不能自动转化成整形。

使用enum class egg {small,medium};这样可以避免同一文件中的同名枚举量冲突。

枚举的底层存储类型转化: enum class:short pizza {Small,Medium,Large}

ADT(abstract data type)抽象数据类型:实现栈。

代码:

// 设置保存小数点后几位
std::streamsize prec=std::cout.precision(3);
// 恢复之前的情况
std::cout.precision(prec);

ios_base::fmtflags orig = 
    std::cout.setf(ios_base::fixed,ios_base::floatfield);
// 恢复原状
std::cout.setf(orig,ios_base::floatfield);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值