c++ study diary4

16.1.24

一、调用构造函数与析构函数的顺序

先构造的后析构,后构造的先析构(类似于栈)。

二、对象数组

数组不仅可以有简单对象组成,也可以由类对象组成。

如:

Student stud[3];

如果数组有多个实参,可以如下定义

Student stud[3]={student(1001,18,87),student(1002,19,76),student(1003,78,72)};

实例:

#include<fstream>

#include<iostream>

#include<string>

#include<vector>

#include<iomanip>

using namespace std;

class box

{public:

box(int h=10,int w=12,intlen=15):height(h),width(w),length(len){

}

int volume();      \\定义函数一定要带()!!

private:

         intheight;

         intwidth;

         intlength;

};

int box::volume(){

         return(height*width*length);

}

int main(){

         boxa[3]={

         box(2,3,4),box(2,4,5),box(3,5,6)};

         cout<<a[0].volume()<<endl;

         cout<<a[1].volume()<<endl;

         cout<<a[2].volume()<<endl;

}

三、对象指针

①指向对象的指针

在建立对象时,编译系统为每一个对象分配一定存储空间。对象空间的起始地址就是对象指针。

类名 *对象指针名

class time

{

         public:

                   inthour;

                   intminute;

                   intsec;

                   voidget_time();

};

void get_time::()

{cout<<hour<<':'<<minute<<':'<<sec<<endl;

}

Time *p;

Time t;

P=&t;

②指向对象成员的指针

对象中的成员也有地址,存放对象成员地址的指针变量就是指向对象成员的指针变量。

Int *p;

P=&t.hour;

③指向对象成员函数的指针

指向对象成员函数的指针变量的方法和定义指向普通函数的指针不同

普通函数类型名(*指针变量名)(参数列表)

Void(*P)()\\ p是指向void型函数的指针

定义指向成员函数的指针

数据类型名(类名::*指针变量名)();

Void(time::*p)()

指针变量名=&类名::成员函数名

P=&time::get_time;

using namespace std;

class time

{

         public:

                   time(inth,int m,int s);

                   inthour;

                   intminute;

                   intsec;

                   voidget_time();

        

};

time::time(int h,int m,int s){

         hour=h;

         minute=m;

         sec=s;

}

void time::get_time()

{cout<<hour<<':'<<minute<<':'<<sec<<endl;

}

int main(){

time t(3,4,5);

int *p1=&t.hour;

cout <<*p1<<endl;

t.get_time();

time *p2=&t;

p2->get_time();

void(time::*p3)();

p3=&time::get_time;     \\成员函数名,没有()!!

(t.*p3)();

}

④this指针

This指针指向本来对象的指针,它的值是当前被调用的成员函数所在的对象的起始地址。

Int box::volume(){    },c++处理为int box::volume(box*this){return(this->height*this->width*this->length);}

*this代表this所指的成员函数

四、常对象

①类名 const 对象名(实参数)

或者:const 类名对象名(实参数),常对象有必要初始化,初始化过后不能改变。

②常数据成员

    可以通过构造函数的参数初始化表对常数据成员进行初始化。不能对常数据成员进行赋值。

Time::time(int h){

Hour=h;}  \\错误,不能进行赋值!!

Time::time(int h):hour(h){}

③常成员函数

类型名 函数名(参数表)const

④指向对象的常指针

Int const *p,consint *p\\p为指针常量,不能通过p来改变变量的值

Int *const p   \\  p的所指不能改变

Cons int &t1=t  \\t1是对t的引用,二者指向同一存储空间,t的值不能改变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值