C++ PP Chapter X 对象和类

本文介绍了C++中面向对象编程的基本概念和技术,包括抽象、封装、多态、继承等特性,详细阐述了类的定义、成员函数的作用域、构造与析构函数的功能及使用方法,并提供了对象数组和初始化实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.  面向对象编程(OOP)特性:
        抽象、封装和数据隐藏、多态、继承、代码的可重用性

2.  类(类型)
    目的: 数据隐藏
    指定类型需要的三项工作:
        a.  决定数据对象需要的内存数量
        b.  决定如何解释内存中的位
        c.  决定可使用数据对象执行的操作或方法

3.  类声明
    关键字 class
    格式
            class className
            {
            private:            ---> 私有成员(只能通过共有成员(或友元)函数来访问)
                private data member declarations
                private member function prototypes
            public:             ---> 共有部分
                public data member declarations
                public member function prototypes
            };

    创建对象: ClassName A,B;

    注: privatepublic 里都可以放数据成员和函数成员
        但私有成员,只能通过共有成员函数来访问或使用
        其中[private]可以缺省,默认访问类型是 private

        C++对结构进行了扩展,默认访问类型是 public 

4.  类方法(类的成员函数)
        a.  定义成员函数时,使用作用域解析运算符 :: 来标识函数所属类
        b.  类方法可以访问类的 private 组件

        例如 : void Stock::update (double price)
        只要类不同,函数名可以同名
        例如 : void John::update (double price)

        定义类方法内无需加成员限定
        定义于类内部的函数将自动成为内联函数,外部定义的可以加 inline 关键字

        类方法使用
            例如: 
                    Stock PQR;
                    PQR.fun();

注:  使用类成员时用成员访问符 . 

5.  类的构造函数

    构造函数名 为类名
    类构造函数:用于构造新的对象、将值赋给它们的数据成员
        特点:不加返回类型,可以默认参数,参数名不能同成员名相同
              当程序声明对象时,会自动调用构造函数

    例如:
        定义
        Stock::Stock(const string &co,long n,double pr)
        {
            ...
        }

        使用(声明变量)
            显式 :  Stock garment = Stock("Furry Mason",50,2.5);
            隐式 :  Stock garment("Furry Mason",50,2.5);

        动态分配方法 

        Stock *pstock = new Stock("Electroshock Games",18,19.0);

6.  默认构造函数

    如果定义了类的构造函数,那么一定要定义默认构造函数
    方法:
        a.  在原有的构造函数上给所有的参数提供默认值(默认参数)
        b.  利用函数重载定义另一个函数--------一个没有参数的函数
                例如:Stock();
                      Stock::Stock()
                      {
                          ...
                      }

7.  析构函数

    析构函数名 为类名前加 ~
    是针对构造函数的没,如果构造函数使用 new 来分配内存,那么析构函数
    使用 delete 来释放内存
    对于一般情况,编译器会自动生成隐式的析构函数

    析构函数调用时间根据对象的创建方式不同而相异

8.  C++11 列表初始化

    需要与构造函数参数列表匹配 
    例如:
        Stock A = {"ABCD",100,121.0} //如果部分默认参数则可缺省, = 可缺省
        Stock B = {}    //对应予默认构造函数

9.const 关键字确保函数不会修改调用对象

    例如:     
            声明: void show() const;
            定义: 
                void stock::show() const
              {
                  ...
              }


10.  this 指针

    对于涉及到另一个对象的函数,如果要返回本身这个对象,那么返回 return *this;


11. 对象数组

    声明方法与创建数组相似
            例如: Stock mystuff[4];
    显示初始化,调用构造函数
            例如:
                    Stocks stocks[4] = 
                                {
                                    Stock("A",1,2);
                                    Stock("B",1,2);
                                    Stock("C",1,2);
                                    Stock("D",1,2);
                                }
    如果没有被显式初始化,那么每个数组元素都会执行隐式构造函数

12. 类作用域(C++ P笔记)










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值