首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

学习C++ -> 类(Classes)的定义与实现

学习C++ -> 类(Classes)的定义与实现

一、"类" 的介绍
    在C++中, 用 "" 来描述 "对象", 所谓的"对象"是指现实世界中的一切事物。那么类就可以看做是对相似事物的抽象, 找到这些不同事物间的共同点, 如自行车和摩托车, 首先他们都属于"对象", 并且具有一定得相同点, 和一些不同点, 相同点如他们都有质量、都有两个轮子, 都是属于交通工具等。"都有质量"、"两个轮子"属于这个对象的属性, 而"都能够当做交通工具"属于该对象具有的行为, 也称方法。


    类是属于用户自定义的数据类型, 并且该类型的数据具有一定的行为能力, 也就是类中说描述的方法。通常来说, 一个类的定义包含两部分的内容, 一是该类的属性, 另一部分是它所拥有的方法。以 "人类" 这个类来说, 每个人都有自己的姓名、年龄、出生日期、体重等, 为 人类 的属性部分, 此外, 人能够吃饭、睡觉、行走、说话等属于人类所具有的行为。


    上面举例中所描述的 "人" 类仅仅是具有人这种对象的最基础的一些属性和行为, 可以称之为人的"基类"。 再说说一些具有一些职业的人, 例如学生, 一个学生还具有"基类"中所没有的属性, 如学校、班级、学号; 也可以具有基类所不具有的行为, 如每天需要去上课, 需要考试等。


    学生类可以看做是基类的一个扩展, 因为他具有基类的所有属性和行为, 并且在此基础上增加了一些基类所没有的属性和行为, 像"学生"这样的类称为"人类"这个基类的"派生类"或者"子类"。在学生的基础上海可以进一步的扩展出其他更高级的类, 如"研究生"类。


    到此, 我们不再更深的去介绍类的其他相关知识。







二、C++类的定义
    C++中使用关键字 class 来定义类, 其基本形式如下:
[url=][/url]
    class 类名    {        public:            //公共的行为或属性        private:            //公共的行为或属性    };[url=][/url]


    说明:
        ①. 类名 需要遵循一般的命名规则;


        ②. publicprivate 为属性/方法限制的关键字, private 表示该部分内容是私密的, 不能被外部所访问或调用, 只能被本类内部访问; 而 public 表示公开的属性和方法, 外界可以直接访问或者调用。
            一般来说类的属性成员都应设置为private, public只留给那些被外界用来调用的函数接口, 但这并非是强制规定, 可以根据需要进行调整;


        ③. 结束部分的分号不能省略。




    类定义示例:
        定义一个点(Point)类, 具有以下属性和方法:
            ■ 属性: x坐标, y坐标
            ■ 方法: 1.设置x,y的坐标值; 2.输出坐标的信息。

        实现代码如下:
[url=][/url]
            class Point            {                public:                    void setPoint(int x, int y);                    void printPoint();                private:                    int xPos;                    int yPos;            };[url=][/url]



    代码说明:
        上段代码中定义了一个名为 Point 的类, 具有两个私密属性, int型的xPos和yPos, 分别用来表示x点和y点。在方法上, setPoint 用来设置属性, 也就是 xPos 和 yPos 的值; printPoint 用来输出点的信息。


        类在定义时有以下几点需要注意:
            ①. 类的数据成员中不能使用 auto、extern和register等进行修饰, 也不能在定义时进行初始化, 如 int xPos = 0; //错;
            ②. 类定义时 private 和 public 关键词出现的顺序和次数可以是任意的;
            ③. 结束时的分号不能省略, 切记!







三、C++类的实现
    在上面的定义示例中我们只是定义了这个类的一些属性和方法声明, 并没有去实现它, 类的实现就是完成其方法的过程。类的实现有两种方式, 一种是在类定义时完成对成员函数的定义, 另一种是在类定义的外部进行完成。


    1>. 在类定义时定义成员函数
        成员函数的实现可以在类定义时同时完成, 如代码:
[url=][/url]
1         #include <iostream> 2 3         using namespace std; 4 5         class Point 6         { 7             public: 8                 void setPoint(int x, int y) //实现setPoint函数 9                 {10                     xPos = x;11                     yPos = y;12                 }13 14                 void printPoint()       //实现printPoint函数15                 {16                     cout<< "x = " << xPos << endl;17                     cout<< "y = " << yPos << endl;18                 }19 20             private:21                 int xPos;22                 int yPos;23         };24 25         int main()26         {27             Point M;        //用定义好的类创建一个对象 点M28             M.setPoint(10, 20); //设置 M点 的x,y值29             M.printPoint();     //输出 M点 的信息30 31             return 0;32         }[url=][/url]


        运行输出:
        x = 10        y = 20        Process returned 0 (0x0)   execution time : 0.406 s        Press any key to continue.

        与类的定义相比, 在类内实现成员函数不再是在类内进行声明, 而是直接将函数进行定义, 在类中定义成员函数时, 编译器默认会争取将其定义为 inline 型函数。
继承事业,薪火相传
返回列表