C++primer plus第十章习题答案(部分)

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)(对应的参数)
最后这一章写的有点少,因为我已经学到很后面了,现在回来看这些知识就感觉太简单,没有做下去的兴趣,大家在学习这一节的知识时,也可以不钻牛角尖,后面学的就自然懂了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值