C++ primer plus 第10章 对象和类

OOP最重要的特性:
  • 抽象
  • 封装和数据隐藏
  • 多态
  • 继承
  • 可重用的代码
数据隐藏:防止程序直接访问数据
封装:数据隐藏、将实现细节隐藏在私有部分中、将类函数定义和声明放在不同的文                件中。

类函数的定义位于类声明中,则自动成为内联函数
内联函数要求在每个使用它们的文件中都对其进行定义,因此将其放在头文件中最简便

1. 构造函数
使用:(1)显式地调用   ClassName object = ClassName(arg1,arg2,……);C++标准编译器允许使用两种方法来执行该语句:第一种是和隐式调用相同,第二种是允许调用构造函数来创建一个临时对象,然后将该临时对象复制到object中,并丢弃它。
           (2)隐式地调用  ClassName object(arg1, arg2,……);
仅当没有定义任何构造函数时,编译器才会提供默认构造函数。
定义了构造函数后,程序员必须人为提供默认构造函数。
两种方式:(1)给已有构造函数提供默认值。在设计类时,通常应提供对所有类成员做隐式初始化的的默认构造函数。
                  (2)定义另一个构造函数
注意: 隐式地调用默认构造函数时,不要使用圆括号。如Stock second(),表示返回Stock对象的函数。

使用构造函数为已存在的对象赋新值时,是通过让构造函数创建一个新的临时的对象,然后将其内容复制给已存在的对象来实现的。随后程序调用析构函数,以删除该临时对象

2. const成员函数
const关键字放在括号后面
如果对象声明为const,则只能调用const的成员函数

3. this 指针
this指针为调用它的对象的地址
如果需要调用整个对象,则可以使用*this

4. 对象数组
Stock stocks[N] = { Stock(arg1, arg2,……), Stock( ), …… }
初始化过程:(1) 使用默认构造函数创造数组元素
                     (2) 花括号中调用的构造函数将创建临时对象
                     (3) 将临时对象的内容复制到相应的元素中
因此要创建类对象,这个类必须有默认构造函数
 
5. 作用域为整个类的常量
(1) 枚举
class Classname{
private:
    enum{ len = 30 };
}
使用这种方式不会创建类数据成员,所有对象中都不包含枚举,在代码中遇到它时,编译器将使用30来替代它
(2) static
class Classname{
private:
    static const int len = 30;
}
该常量将与其他静态变量存储在一起,而不是存储在对象中,因此只有一个len常量,被所有Stock对象共享。
只能声明整数或枚举的静态常量,不能存储double常量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值