oop第四次课作业总结

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

以静态成员函数为例总结,静态成员变量异曲同工。
类的静态成员函数是同一类的所有对象共享的,不需要用this指针
可以通过类名和对象名访问静态成员函数
声明时要在普通成员函数加上static,在定义时不需要
注意 在初始化静态成员变量时要在类外!!
例如:(该例子会在后面给出题目)

class Group {
private:
	int num;
	static int blackList[N];
	static int size;
public:
	Group();
	Group(int num, bool bSign);
	static void addToList(int num);
	static void removeFromList(int num);//静态成员函数的声明(要说明static)
	static void displayList();
};
Group aa;
void Group::removeFromList(int num) {//静态成员函数的定义(无需说明static)
	int ii;
	for ( ii = 0; ii < N; ii++) {
		if (blackList[ii] == num) {
			break;
		}
	}
	for (ii = ii; ii + 1 < N; ii++) {
		blackList[ii] = blackList[ii + 1];
	}
	blackList[ii] = 0;
	size--;
}

可以如此引用

aa.removeFromList(num);
//或者
Group::removeFromList(num);
Group::size=0;//初始化静态成员变量

静态成员函数和普通成员函数的区别

静态成员函数 普通成员函数
隐含this指针 no yes
能够访问普通成员函数(变量) no yes
能够访问静态成员函数(变量) yes yes
能够通过类名直接调用 yes no
能够通过对象名调用 yes yes

例题:oop第四次练习6-4
写得更好更详细的一篇博客传送门

如何动态创建对象数组

1、使用new进行创建,但在最后要记得使用delete释放
简单解释下:当new创建只是一个对象时,使用“delete 对象名”来释放
而当new创建一个数组(多个对象),使用“delete []对象名”
原因是delete只能释放一个对象,而“delete []”能释放数组内的所有对象
2、要重载多个构造函数,首先要有无参类型的构造函数,再根据需要构造有参类型的构造函数
3、在通过new+无参类型构造函数 构造了对象数组后,接下来可以用循环的方法输入对象数组中的对象元素(7-1);也可以调用有参类型的构造函数使用输入的数据进行处理(7-5)
例题:oop第四次练习7-1以及oop第四次练习7-5

常对象、常成员

猜你喜欢

转载自www.cnblogs.com/xiao-qingjiang/p/12892326.html