1 复习题
- 1类是用户自定义类型的定义,类声明指出了数据如何存储,同时指定了访问数据的方法。
- 2类表示人们可以用类的共有接口对类对象执行操作,这是抽象。类的数据成员可以是私有的,这意味着只能通过成员函数来访问这些数据,这是数据隐藏。实现的具体细节(如数据表示和方法的代码)都是隐藏的,这是封装。
- 3类定义了一种类型,包括如何使用它。对象是一个变量或其他数据对象,并根据类定义创建和使用。类和对象之间的关系同标准类型煜其变量之间的关系相同。
- 4如果创建给定类的多个对象,则每个对象都有其自己的数据内存空间;但所有的对象都使用同一组成员函数,所以函数不占类的内存空间(虚函数除外)
- 6在创建类对象时调用构造函数,但对象过期时(如new的delete掉)会调用析构函数。
- 8默认构造函数最大的好处应该是可以不对对象进行显式的初始化,同时可以简单的定义对象数组。
2 编程题
这部分的题目还是很简单的,我就只放一下最后一题的代码了,利用了函数指针可以学一下。
#include<iostream>
class List
{
private:
int *arr;
int size;
int now_capacity = 10;
public:
List()
{
arr = new int [now_capacity];
size=-1;
}
void add(int item)
{
if(++size<now_capacity-1)
arr[size] = item;
else
{
int temp_arr[now_capacity];
for(int t=0;t<now_capacity;++t)
temp_arr[t]=arr[t];
now_capacity *= 5;
delete [] arr;
arr = new int[now_capacity];
for(int t=0;t<now_capacity;++t)
arr[t]=temp_arr[t];
arr[size]=item;
}
}
bool is_empty()
{
return size==-1?true:false;
}
void visit(void (*pf)(int &))
{
for(int t=0;t<=size;++t)
{
(*pf)(arr[t]);
}
}
void Print()
{
for(int t=0;t<=size;++t)
std::cout<<arr[t]<<' ';
}
};
void a(int &a1)
{
++a1;
std::cout<<a1<<std::endl;
}
int main()
{
List a1;
a1.add(1);
a1.Print();
a1.visit(a);
a1.Print();
}
这里我没有直接使用静态数组,而是使用了类是stl分配空间的一种做法,还有关于函数指针做参数的使用,格式是这样的返回值类型 (*op)(参数列表)
,在函数中使用时,格式为(*op)(对应的参数)
。
最后这一章写的有点少,因为我已经学到很后面了,现在回来看这些知识就感觉太简单,没有做下去的兴趣,大家在学习这一节的知识时,也可以不钻牛角尖,后面学的就自然懂了。