C++模板类&异常处理

模板类类似JAVA中的泛型

//模板类

template

class A{

   public:

   A(T a){

      this->a = a;

}

   protected:

   T a;

};

//普通类继承模板类

class B : public A{public:B(int a,int b) : A(a){

   this->b = b;

}

   private:

   int b;

};

//模板类继承模板类

template

class C : public A{

public:C(T c, T a) : A(a){

this->c = c;

}

protected:

T c;

};

void main(){

A a(6);

system("pause");

}

如上面的几个例子,就理解成泛型吧

C++ 异常处理,根据抛出的异常数据类型,进入到相应的catch块中

void main(){

try{

   int age = 300;

   if (age > 200){

      throw 9.8;

   }

}

catch (int a){

   cout << "int异常" << endl;

}

catch (char* b){

   cout << b << endl;

}

catch (...){

   cout << "未知异常" << endl;

}

system("pause");

}

如上,可以看出,C++抛异常,主要有三个关键字,cry,catch,throw

而且与JAVA不同的是,catch可以是任意类型!throw也是任意类型,比如你throw一个char类型,那么如果catch里面也有char类型,就会走对应的catch,没有的话,就会走...类型!

//throw 抛出函数外

void mydiv(int a, int b){

if (b == 0){

throw "除数为零";

}

}

void func(){

try{

mydiv(8, 0);

}

catch (char* a){

throw a;

}

}

void main(){

try{

func();

}

catch (char* a){

cout << a << endl;

}

system("pause");

}

依然跟JAVA一样的。对应一下就行了

自己创建一种异常:

//标准异常(类似于JavaNullPointerException)

class NullPointerException : public exception{

public:

NullPointerException(char* msg) : exception(msg){

}

};

void mydiv(int a, int b){

if (b > 10){

throw out_of_range("超出范围");

}

else if (b == NULL){

throw NullPointerException("为空");

}

else if (b == 0){

throw invalid_argument("参数不合法");

}

}

void main(){

try{

mydiv(8,NULL);

}

catch (out_of_range e1){

cout << e1.what() << endl;

}

catch (NullPointerException& e2){

cout << e2.what() << endl;

}

catch (...){

}

system("pause");

}

你可能感兴趣的:(C++模板类&异常处理)