用 "" 来描述 "对象"

类是属于用户自定义的数据类型

一个类的定义包含两部分的内容, 一是该类的属性, 另一部分是它所拥有的方法

 

类的定义

C++中使用关键字 class 来定义类, 其基本形式如下:

class 类名    {        public:            //公共的行为或属性         private:            //公共的行为或属性    };

注:(1)类名遵循一般的命名规则;

(2)public与private为属性/方法限制的关键字,private表示该部分是私密的,不能被外部所访问或调用,只能被本类内部访问;而public表示公开的属性和方法,外界可以直接访问或调用。

(3)结束部分的分号不能省略。

例子:定义一个点(Point)类,具有以下属性和方法:

      属性:x坐标,y坐标

      方法:1设置x,y的坐标值;2输出坐标的信息。

实现代码如下:

            class Point            {                public:                    void setPoint(int x, int y);                    void printPoint();                private:                    int xPos;                    int yPos;            };

注释:定义Point类名,有两个私密属性,int型的xPos与yPos,分别用来表示x点和y点;在方法上,setPoint设置,printPoint()输出点的信息;

注意:a.类数据成员不能使用auto、extern和register等进行修饰,也不能在定义时初始化;b.类定义时private和public关键词出现的顺序和次数可以是任意的;c.结束时的分号不能省略!

 

类的实现:完成其方法的过程

有两种方式:一是在类定义时完成对成员函数的定义;二是在来类定义的外部进行完成;

一是在类定义时完成对成员函数的定义:

例子:

#include <iostream>  

 using namespace std;  

    class Point

      {

         public:

           void setPoint(int x, int y) //实现setPoint函数

           {

             xPos = x;

             yPos = y;

           }

           void printPoint()       //实现printPoint函数

           {

             cout<< "x = " << xPos << endl;

             cout<< "y = " << yPos << endl;

           }

         private:

           int xPos;

           int yPos;

       };

       int main()

   {

           Point M;        //用定义好的类创建一个对象 点M

           M.setPoint(10, 20); //设置 M点 的x,y值

           M.printPoint();     //输出 M点 的信息 

           return 0;

       }

运行结果:x=10      y=20

注释:与类的定义相比,在类内实现成员函数不再是在类内进行声明,而是直接将函数进行定义,在类中定义成员函数时,编译器默认会将其定义为inline型函数。

 

二是在来类定义的外部进行完成:

在类外定义成员函数通过在类内进行声明,然后在类外通过作用域操作符::进行实现,形式如下:

返回类型 类名::成员函数名(参数列表)

{

//函数体

}

例子:

#include <iostream>

using namespace std;

 

class Point

 {

   public:

      void setPoint(int x, int y); //在类内对成员函数进行声明

      void printPoint();

   private:

      int xPos;

      int yPos;

 };

 void Point::setPoint(int x, int y) //通过作用域操作符 '::' 实现setPoint函数

 {

    xPos = x;

    yPos = y;

 }

 void Point::printPoint()       //实现printPoint函数

 {

    cout<< "x = " << xPos << endl;

    cout<< "y = " << yPos << endl;

 }

 int main()

 {

Point M;        //用定义好的类创建一个对象 点M

    M.setPoint(10, 20); //设置 M点 的x,y

    M.printPoint();     //输出 M点 的信息

return 0;

 }

运行结果:x=10    y=20

注释:依setPoint成员函数来说,在;类内声明的形式为 void setPoint(int x, int y); 那么在类外对其定义时函数头就应该是 void Point::setPoint(int x, int y) 这种形式, 其返回类型、成员函数名、参数列表都要与类内声明的形式一致。

通过 对象名.公有函数名(参数列表); 的形式就可以调用该类对象所具有的方法, 通过 对象名.公有数据成员; 的形式可以访问对象中的数据成员。

 

案例:// 找出一个整形数组中的元素的最大值

#include<iostream>

using namespace std;

class Array  //定义类,类名:Array

{

public: 

void set_value();   

void max_value();     //成员函数

void show_value();

private: 

int array[11];   //声明数组

int max;         //声明最大值变量

};        //需要分号

void Array::set_value()  //定义类的函数:输入11个数

int i; 

for(i=0;i<11;i++)  

cin>>array[i];

}

void Array::max_value()  //定义类的函数:比较11个数

int i; 

max=array[0]; 

for(i=0;i<11;i++)  

if(max<array[i])

max=array[i];

}

void Array::show_value() //定义类的函数:输出最大值

cout<<"max="<<max<<endl;

}

int main()  //主函数

Array arrmax;        //定义一个Array的变量

arrmax.set_value();  //

arrmax.max_value(); 

arrmax.show_value(); 

return 0;

}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值