C++类的定义与使用

【1】类的基本格式:

class  类名

{  [private:] 私有数据成员和成员函数;

public: 公有数据成员和成员函数

};// public和private 出现的次数和位置是任意的,通常将头文件写在头文件中。

 

【2】类里面的成员函数有两种实现方法:(1)在类定义的时候只给出原型,函数的定义写在一个实现文件中(.cpp);(2)直接将成员函数的定义写在类定义中,默认为内联函数(也可以在实现文件中用inline关键字来表示内联函数),一般直接定义在类中的函数都比较简单;

【3】this指针:对象调用成员函数的时候默认使用this指针,表明是这个对象在调用数据成员,而在成员函数中要把对象作为整体来访问时,必须要显式地使用this指针,这种情况在函数中返回一个对调用函数的对象的引用时常出现。

【4】构造函数和析构函数

(1)构造函数是一类特殊的成员函数,用来进行参数的初始化。它是系统自动调用的,并且函数名字必须与类名相同,不需要返回类型(void也不行),是一组重载函数,可以设置默认参数。

基本格式: 类名  对象名(实际参数表)

构造函数的初始化列表是其最大的特别之处!!!

具体格式如:DoubleArray:: DoubleArray(int lh, int rh): low(lh), high(rh)   // 令low= rh, high = rh

{storage = new double [high-low+1];} 

为什么要使用初始化列表来对构造函数呢?原因有两点:第一数据成员不是普通的内置类型,而是一个对象,无法直接采用赋值语句进行赋值;第二类包含常量的数据类型,常量只有在定义它的时候进行初始化,而不能对其进行赋值。

(2)析构函数是系统在回收对象的存储空间前自动调用的。其格式是:“ ~类名() ” 它没有参数,也没有返回值。

(3)复制构造函数

基本格式: 类名(const  <类名> &)

例如:

class point{

      int x,y;            //私有数据成员

      public:

point(int a, int b) {x= a; y=b;}           //公有构造函数

point(const point &p) {x=2*p.x; y=2*p.y;}             //采用复制构造函数

};

 

【5】常量函数与常量成员函数

例如定义一个常量对象:const  Rational  r1(1,3);     //常量对象只能并且必须初始化,但是不能赋值

C++中常量对象只能用来调用常量成员函数,其具体的定义为:函数类型   函数名()  const{函数内容}

 

【6】友元

根据C++语言的语法规定,类外面的函数不能访问该类的私有成员。对私有成员的访问需要通过类的公有成员函数进行,但是这样来处理会导致计算机访问私有成员的效率降低。此时我们可以用“友元”函数来访问数据的私有成员。其基本格式如下:

(1) friend void f()                       // 在某个类中定义友元函数 

(2)friend int  B::func(double);   //将B类的成员函数设置为A类的友元

(3)friend class  B;                    //将B类设置为A的 “友元”

友元关系既不是对称关系,也不是传递关系,尽量慎用友元函数!!

 

【7】  运算符重载

在C++语言中,我们一般认为类其实与内置类型是一样的,变量与对象是一样的,如有变量 int a=1, b=2; 我们可以直接使用 a+b进行变量的加减,但是对于由类产生的对象而言,我们不能够直接对其进行运算,因此我们需要通过运算符重载的方式来教会类类型的对象来执行内置运算符的操作。一般而言,在C++中,重载函数名为:operator@, 其中,“@”表示需要重载的运算符(e.g. "+" 、“-”、“ =”、“ * ” )。

 

 

 

 

 

 

 

 

  

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值