第二章:类和对象的特征

/*         第二章:类和对象的特征         */
                                                                 // 制作人:easy
                                                                 //制作时间:2017-3-7
                                                                 //原创制作,盗版必究

/*********************************************欢迎进入C++学习课堂**********************************************************************
一.概述

1.类是一个抽象(表示一类事物的本质),而对象则是抽象的具体。

2.对象的两个要素:  a.应具有属性(数据成员)
                                        b.具有行为(成员函数)

3.对象可以根据外界给的信息(即调用成员函数)进行相应的操作。

4.C++程序的重要特点:“封装性”->        a.各对象互不干扰
                                                                        b.封装信息对外隐蔽(又叫“信息屏蔽”)

5.继承与重用(C++两种重要机制):        a.即在原有类的基础上增添新的特征,而形成的新的类叫“子类”或“派生类”
                                                                        b.这种继承的机制又叫“软件重用”

6.多态性:基于继承机制,即相似但不相同的对象对外界同一信息做出不同的相应。

7.关于面向对象与基于对象:C++支持面向对象也支持基于对象,基于对象主要在于强调主要的操作是对对象的操作,而面向对象则是在基于对象的基础上添加了继承与重用机制。

8.面向过程的程序设计与基于对象的程序设计主要区别:
                                                                        A.面向对象:数据公用(数据缺乏保护,数据交叉容易发生错误)
                                                                        B.基于对象:数据分属于不同的对象(一组数据是为一组操作做准备,数据与操作相互结合,与外界分隔)

9.软件开发五步走:分析(用户)->设计->编程->测试->维护

**********************************以上这一部分内容可能让你感到枯燥,这主要是为了让你更好的了解C++,请仔细阅读以上部分,认真体会**************************************

二.类与对象

1.简述:a.类是对象的类型,对象是类的具体实例
                b.类比类与结构体(见以下代码段,!请格外注意代码段后边的标注)
************************************************************************
                                        struct student
                                        {
                                                int num;
                                                char name[20];
                                                char sex;
                                        }
************************************************************************

                                        class student          //类头
                                        {                      //{...}是类体,包括数据成员和成员函数,体现了数据与操作封装在了一起
                                                char name[20];
                                                char sex;
                                                void display();
                                        }
*************************************************************************        
        @说明:        a.类中的成员外界不能直接调用
                         b.成员函数为类与外界的接口

2.类的声明格式:
**************************************************************************
                                class 类名
                                {
                                private:私有数据成员及成员函数;     //private与public叫做“成员访问限定符”

                                public:共有数据成员及成员函数;
                                };
***************************************************************************

3.类声明时注意:        a.如果类体即没写private又没写public,则默认为public
                                        b.同一成员访问限定符可以在类体内出现多次,但是为了程序的美观,每一种只写一次
                                        c.C++为用户提供类库(了解即可)

4.定义对象(三种方法)
****************************************************************************
A.先声明类类型然后在定义对象,例如:
class student
{
private:
        int num;
        int age;             //先声明类       
public:
        void display();
};

class student s1;  //再定义对象
student s1;        //这种定义方式省去class,与上面的完全相同

-----------------------------------------------------------------------------

B.在声明类时同时定义对象,例如:
class student
{
private:
        int num;
        int age;
public:
        void display();
}s1;                //在声明类时同时定义了对象s1

-----------------------------------------------------------------------------

C.不标示类名,直接定义(不推荐,因为在C++中一个类可能不止为一个程序服务,不标识类名可能导致别的程序无法编译)

class 
{
        int num;
        int age;
        void display();
}s1;

******************************************************************************

5.类与结构体的异同

结构体内如果不表明“成员访问限定符”(private、public),即认为是共有的(即public);
而类中如果不表明,则认为是私有的(private);
其他方面并无差别,但是推荐使用class来体现出C++的风格;

****************************************************下面进入下一板块,成员函数**********************************

三.类的成员函数

1.关于成员访问限定符的说明:        a.private:成员函数;(此函数被视为工具函数)
                                                                b.public:成员函数;(此函数被视为对外接口)

2.成员函数的定义:        a.类内定义
                                        b.类外定义
下面来演示这两种定义方法:
*****************************************************************************
//类内定义display函数
class student
{
private:
        int num;
        int age;
public:
        void display()                        //类内定义(关于类内定义,请仔细看下面的"inline内置成员函数")
        {
                cout<<num<<age<<endl;
        }
};
*******************************************************************************
//类外定义成员函数
class student
{
private:
        int num;
        int age;
public:
        void display();          //先做类内声明
};


void student::display()            //再做类外定义("::"是作用域限定符,来说明display是student的类内成员函数)
{
        cout<<num<<age<<endl;
}
*********************************************************************************
3.内置成员函数(inline成员函数)

关于内置成员函数,其实相当于在函数开头默认添加了一个inline;
使用内置函数的前提:a.函数规模要足够小        b.不可以出现for、switch等;
关于类外内联,一般不使用这种做法;

举例说明:
*********************************************************************************
class student
{
private:
        int num;
public:
        void display()
        {
                cout<<num<<endl;
        }
};

*其实就相当于:

class student
{
private:
        int num;
public:
        inline void display()
        {
                cout<<num<<endl;
        }
};
****************************************************************************************

4.(原理节)成员函数的存储方式---类代码的调用机制

不同对象的函数代码是相同的(即共用一段类代码),因此每个对象不同的是其数据成员不同(数据成员所占空间不同);
#具体请翻看课本p51,认真阅读,有助于理解。



5.对象成员的引用方式:a.对象名+成员运算符(如:s1.display())
                                          b.指向对象的指针(如:p->display())
                                          c.对象的引用(&)
具体的例子见下面的实例,在这里不做过多解释,请类比结构体的变量调用方式


***********************************原理介绍至此,下面通过实例来更好的理解第二章*******************************************************/

//用类来实现时间的输入与输出


#include<iostream>
using namespace std;


class Time                                   //类的声明
{
private:                                      //私有数据成员
        int hour;
        int minute;
        int second;
public:                                       //共有成员函数
        void Set_Time();
        void Show_Time();
};

void Time::Set_Time()                         //成员函数的类外定义
{
        cin>>hour>>minute>>second;
}

void Time::Show_Time()                         //成员函数的类外定义
{
        cout<<hour<<":"<<minute<<":"<<second<<endl;
}

int main()
{
        Time t1;                           //定义对象
        t1.Set_Time();                     //调用成员函数
        t1.Show_Time();


        system("pause");
        return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水能zai舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值