c++中类的学习(二)

来源:互联网 发布:用单片机实现红绿灯 编辑:程序博客网 时间:2024/05/01 22:28

1. 对象数组的定义

使用构造函数初始化,比如:

Box box[2]={

Box(2,3,5);

Box(1,3,2);

}

2.对象指针

Box* b1;

Box b2;

b1=&b2;  //定义

(*b1).height; 或者 b1->height; //两句等价

感觉定义指向成员函数的指针这部分很少用啊,但是有点难,还是记一下好了

格式为

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

初始化为

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

例子:

void (Time::*p2)();

p2=&Time::get_time();

常见的还有指向对象的常指针

Box* const p1;   //表示指向Box类型的p1变量是一个const, 理解成p1是一个const变量,所以不能改变它的指向

常指针通常用来作为函数的形参,保证在函数运行过程中不改变指针变量的值,使其始终指向一个对象

还有个叫做指向常对象的指针

const Box *p1;    //表示p1指向的Box变量是一个常变量,不能通过p1来改变它的值

如果一个变量被声明成常变量,只能用指向常变量的指针指向它

指向常变量的指针不止可以指向const变量,还可以指向非const变量,此时不能通过指针改变该变量的值,但是指针变量本身的值是可以改变的

函数形参是非const的,实参就是非const的,如果形参是const的指针,实参可以是const,也可以是非const

3. 拷贝构造函数(复制构造函数)

程序需要建立一个对象,并用另一个同类对象对它进行初始化

函数的参数为类的对象时,调用时为了建立实参的拷贝,需要调用拷贝构造函数按照实参复制给形参、

函数的返回值是类的对象

这三种情况下系统自动调用拷贝构造函数

4. 静态成员函数和静态成员变量

静态成员变量我记得在static的博客里面写了用法了

静态成员函数和非静态成员函数的根本区别是:非静态成员函数有this指针,静态成员函数没有this指针,所以静态成员函数不能访问非静态的数据成员



0 0
原创粉丝点击