C++异常 模板类

2021-03-18  本文已影响0人  闪客飞飞

//异常: 异常处理,根据抛出的异常数据类型,进入到相应的catch代码块中
//void main(){
// try{
// int a = 300;
// if (a > 200){
// throw 9.8;
// }
// }
// catch (int a){
// cout << "int 异常" << a << endl;
// }
// catch (char* b){
// cout << "char 异常" << b << endl;
// }
// catch (...){
// cout << "未知异常" << endl;
// }
// system("pause");
//}

//throw 抛出函数外
//void mydiv(int a, int b){
// if (b == 0){
// throw "除数为0";
// }
//}
//void main(){
// try{
// mydiv(12, 0);
// }
// catch (char* c){
// cout << "异常:" << c << endl;
// }
//
// system("pause");
//}

//抛出异常对象 异常类
//class myException{
//public:
// myException(){
// }
//};
//void mydiv(int a, int b){
// if (b == 0){
// //throw myException();
// //throw new myException; 异常指针 需要delete
// throw myException();
// }
//}
//void main(){
// try{
// mydiv(4, 0);
// }
// /catch (myException w){
// cout << "myException:" << endl;
// }
/
// catch (myException &w){
// cout << "myException 引用:" << endl;
// }
// catch (myException* ww){
// cout << "myException 指针:" << endl;
// delete(ww);
// }
// system("pause");
//}

////自定义异常
//class myException :public exception{
//public:
// myException(char * msg) :exception(msg){
//
// }
//};
////标准异常
//void mydiv(int a, int b){
// if (b > 10){
// throw out_of_range("超出范围");
// }
// else if(b==2){
// throw invalid_argument("参数不合法");
// }
// else if (b==NULL)
// {
// throw myException("为空");
// }
//}
//void main(){
// try{
// mydiv(3, NULL);
// }
// catch (out_of_range o){
// cout << o.what() << endl;
// }
// catch (invalid_argument o){
// cout << o.what() << endl;
// }
// catch (myException &o){
// cout << o.what() << endl;
// }
// system("pause");
//}

//外部类的方式
//class Err{
//public:
// class Myexception{
// public:Myexception(){
// }
// };
//};
//void mydiv(int a, int b){
// if (b == 0){
// throw Err::Myexception();
// }
//}

//模板类
template <class T>
class A {
public:
A(T a){
this->a = a;
}
protected:
T a;
};
//普通类继承模板类
class B:public A<int>{
public:
B(int a, int b) :A<int>(a){
this->b = b;
}
private:
int b;
};
//模板类继承模板类
template <class T>
class C :public A<T>{
public:
C(T c,T a) :A<T>(a){
this->c = c;
}
protected:
T c;
};
void main(){
//实例化模板类对象
A<int>(6);
B(2, 4);
C<int>(2, 4);
system("pause");
}

上一篇下一篇

猜你喜欢

热点阅读