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

来源:互联网 发布:淘宝如何运费设置 编辑:程序博客网 时间:2024/05/09 06:37
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常量
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 天猫买的东西发票怎么办 齐鲁医院没床位怎么办 房地产违约交房怎么办 中介收了钱不退怎么办 云联惠被骗的钱怎么办 云联惠被骗的人怎么办 婴儿肚脐凸出来怎么办 捷达伙伴电子扇老转怎么办 云支付买车怎么办 微信商城被骗怎么办 被恒宇商品骗了怎么办 广发二审被拒怎么办 商家一直不发货怎么办 商家迟迟不发货怎么办 鞋子饰品掉了怎么办 京东e卡卡密丢失怎么办 遇到找零钱骗局怎么办 遇到惠凯骗局怎么办? vs2017多个函数怎么办 爱钱进倒闭了钱怎么办 被骗注册了公司怎么办 吃了转基因食物怎么办 微信无法付款怎么办 oppo手机黑屏打不开怎么办 三星手机黑屏打不开怎么办 拼多多发错货了怎么办 提示付款待签收怎么办 别人寄错东西怎么办 买东西被税了怎么办 中国邮政被税了怎么办 眼皮对眼影过敏怎么办 眼影过敏眼睛肿怎么办 澳洲打黑工寄钱怎么办 linux系统忘记密码怎么办 gofun客服打不通怎么办 中信客服打不通怎么办 视频压缩失败无法发送怎么办 ftp文件夹形式打不开怎么办 下载文件删不了怎么办 手机无法加载图片怎么办 cad安装闪退怎么办