类和对象第四讲

类和对象第四讲

对象数组的使用方法:

#include <iostream>

using namespace std;
class myclass
{
public:
    myclass(int h=10,int w=12,int l=15)
    {
        h1=h;
        w1=w;
        l1=l;
    }
    int show_v();
private:
    int h1;
    int w1;
    int l1;
};
int myclass::show_v()
{
    return (h1*w1*l1);
}
int main()
{
    myclass a[3]=
    {
        myclass (10,12,15),
        myclass (15,18,20),
        myclass (16,20,26)};
    cout<<"a[0] is : "<<a[0].show_v()<<endl;
    cout<<"a[1] is : "<<a[1].show_v()<<endl;
    cout<<"a[2] is : "<<a[2].show_v()<<endl;
    return 0;
}

对象指针

对象指针的使用方法:

#include <iostream>

using namespace std;
class myclass
{
public:
    myclass(int h,int m,int s)
    {
        hour=h;
        minute=m;
        sec=s;
    }
    int hour;
    int minute;
    int sec;
    void get_myclass();
};
void myclass::get_myclass()
{
    cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
int main()
{
    myclass t1(10,13,56);         //定义myclass类的对象t1.
    int *p1=&t1.hour;             //定义指向整型数据的指针变量p1,并使p1指向t1.hour.
    cout<<*p1<<endl;              //输出p1所指的数据成员t1.hour.
    t1.get_myclass();             //调用对象t1的成员函数get_myclass.
    myclass *p2=&t1;              //定义指向myclass类的指针变量p2,并是p2指向t1.
    p2->get_myclass();            //通过p2所指对象(即t1)的get_myclass函数.
    void (myclass :: *p3)();      //定义指向myclass类公用成员函数的指针变量p3.
    p3=&myclass::get_myclass;     //使p3指向myclass类公用成员函数get_myclass
    (t1.*p3)();                   //调用对象t1中p3所指的成员函数(即t1.get_class).
}

可以看到输出结果如下:

10                     (主函数第4行的输出)

10 : 13 :56              (主函数第5行的输出)

10 : 13 :56              (主函数第7行的输出)

10 : 13 :56              (主函数第10行的输出)

下面开始分析,在主函数中,定义了myclass类对象t1,并使之初始化.定义p1为指向整型数据的指针变量,并使之指向t1.hour. 然后输出p1所指的整型数据(t1.hour).主函数第5行调用对象t1的成员函数get_myclass,输出t1hour,minutesec的值.6行定义指向myclass类的指针变量p2,并使之指向对象t1,4行调用p2所指向对象(t1)get_myclass函数.用样可以输出t1中的hour,minute,sec的值8行定义指向myclass公用成员函数的指针变量p3,9行是p3指向myclass类的公用成员函数get_myclass,10行调用对象t1p3所指的成员函数,t1.get_myclass(),输出t1中的hour,minute,sec的值.

应该不难理理解,我是这么理解的,指针指向谁,就代表指针现在就是他所指的那个东西.

            介绍一点身为程序员应该知道的小东西

This指针:每个对象的数据成员都分别占用存储空间,如果对同个类定义了n个对象,则组成n组同样大小的空间以存放n个对象中的数据成员.但是不同的对象都调用同一个函数代码段.

在每一个成员函数中都包含一个特殊的指针,这个指针的名字是固定的,称为this.他是指向本类对象的指针,他的值是当前被调用的成员函数所在的对象的其实地址.

This指针是隐式使用的,他是作为参数被传递给成员函数的.例如:在程序中show_v的定义如下:

Int box ::show_v()

{

    Return(h*w*l);

}

C++把他处理为

Int box::show_v()

{

    Return(this->h*this->w*this->l);

}

Return (h*w*l);                //隐式的使用this指针

Return(this->h*this->w*this->l);  //显式的使用this指针

         公用数据的保护

有时候需要使数据能在一定范围内共享,又要保证他不被任意修改,这是就引入一个新东西-----const.即把有关的数据定义为常量.

定义常对象的一般形式为:

类名 const  对象名[ (实参表列) ];

也可以把const卸载最左面:

Const 类名 对象名 [ (实参表列) ];

这二者是等价的.

如果一个对象被声明为常对象,则不能调用该对象的非const型的成员函数(除了由系统自动调用的隐式的构造函数的析构函数)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值