⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 练习.txt

📁 钱能主编 C++程序设计教程(第一版) 该书习题的答案代码
💻 TXT
字号:
21.1
#include <iostream.h>
#include <string.h>

class String
{
public:
	String(char*,int);

	class Range
	{
	public:
		Range(int j):index(j) {}
		int index;
	};

	class Size{};

	char& operator [] (int k)
	{
		char m='m';
		if(0<=k && k<len)
		{
			if((int)p[k]<(int)m)
			{
				return p[k];
			}
			else
				throw 0;
		}
		throw Range(k);
	}
	private:
		char* p;
		int len;
		static int max;
};
int String::max=20;

String::String(char* str,int si)
{
	if(si<0||max<si)
		throw Size();

	p=new char[si];
	strncpy(p,str,si);
	len=si;

}
void g(String& str)
{
	int num=10;
	for(int n=0;n<num;n++)
		cout<<str[n];
	cout<<endl;
}
void f()
{
	//code segment 1
	try
	{
		//code segment 2
		String s("abcdefqghijklmnoprstuvwxyz",10);
		g(s);
	}
	catch(String::Range r)
	{
		cerr<<"->out of range:"<<r.index<<endl;
		//code segment 3
	}
	catch(String::Size)
	{
		cerr<<"size illegal!"<<endl;
	}
	catch(int)
	{
		cout<<endl<<"Pastm error!"<<endl;
	}
	cout<<"The program will be continued here."<<endl;
	//code segment 4
}

void main()
{
	//code segment 5
	f();
	cout<<"These code is not effected by probably exception in f()."<<endl;
}

21.2
#include <iostream.h>

class A{
public:
        class Error{};
        A()
        {
          n = new int;
          init();
        }
        void init()
        {
          //do something ...
          throw Error();
        }
private:
       int* n;
};
void main()
{
	try
	{
		A a;
	}
	catch(A::Error)
	{
		cout <<"error when initialize.\n";
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -