day7: homework 修改第7题
This commit is contained in:
parent
8c46e7a977
commit
166515cf82
|
@ -44,6 +44,7 @@ catch (int e)
|
||||||
********************************************************************/
|
********************************************************************/
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <typeinfo>
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
@ -74,51 +75,60 @@ public:
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
Animal *ap = new Animal(); // 创建一个 Animal 类型的指针
|
Animal *ap = new Animal(); // 创建一个 Animal 类型的指针
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Cat *cp = dynamic_cast<Cat *>(ap); // 将其转换为 Cat 类型的指针
|
Cat *cp = dynamic_cast<Cat *>(ap); // 将其转换为 Cat 类型的指针
|
||||||
cp->meow();
|
if (cp)
|
||||||
|
cp->meow();
|
||||||
|
else
|
||||||
|
throw 1;
|
||||||
}
|
}
|
||||||
catch (int e)
|
catch (int &e)
|
||||||
{
|
{
|
||||||
cout << "dynamic_cast 将 Animal 转换为 Cat 失败" << endl
|
cout << "dynamic_cast 将 Animal 转换为 Cat 失败" << endl;
|
||||||
<< e << endl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Animal *ap2 = new Animal(); // 创建一个 Animal 类型的指针
|
Animal *ap2 = new Animal(); // 创建一个 Animal 类型的指针
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Dog *dp = dynamic_cast<Dog *>(ap2); // 将其转换为 Dog 类型的指针
|
Dog *dp = dynamic_cast<Dog *>(ap2); // 将其转换为 Dog 类型的指针
|
||||||
dp->bark();
|
if (dp)
|
||||||
|
dp->bark();
|
||||||
|
else
|
||||||
|
throw 1;
|
||||||
}
|
}
|
||||||
catch (int e)
|
catch (int &e)
|
||||||
{
|
{
|
||||||
cout << "dynamic_cast 将 Animal 转换为 Dog 失败" << endl
|
cout << "dynamic_cast 将 Animal 转换为 Dog 失败" << endl;
|
||||||
<< e << endl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Cat *cp2 = new Cat(); // 创建一个 Cat 类型的指针
|
Cat *cp2 = new Cat(); // 创建一个 Cat 类型的指针
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Animal *ap3 = dynamic_cast<Animal *>(cp2); // 将其转换为 Animal 类型的指针
|
Animal *ap3 = dynamic_cast<Animal *>(cp2); // 将其转换为 Animal 类型的指针
|
||||||
cout << "dynamic_cast 将 Cat 转换为 Animal 成功" << endl;
|
if (ap3)
|
||||||
|
cout << "dynamic_cast 将 Cat 转换为 Animal 成功" << endl;
|
||||||
|
else
|
||||||
|
throw 1;
|
||||||
}
|
}
|
||||||
catch (int e)
|
catch (int &e)
|
||||||
{
|
{
|
||||||
cout << "dynamic_cast 将 Cat 转换为 Animal 失败" << endl
|
cout << "dynamic_cast 将 Cat 转换为 Animal 失败" << endl;
|
||||||
<< e << endl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Dog *dp2 = new Dog(); // 创建一个 Dog 类型的指针
|
Dog *dp2 = new Dog(); // 创建一个 Dog 类型的指针
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Animal *ap4 = dynamic_cast<Animal *>(dp2); // 将其转换为 Animal 类型的指针
|
Animal *ap4 = dynamic_cast<Animal *>(dp2); // 将其转换为 Animal 类型的指针
|
||||||
cout << "dynamic_cast 将 Dog 转换为 Animal 成功" << endl;
|
if (ap4)
|
||||||
|
cout << "dynamic_cast 将 Dog 转换为 Animal 成功" << endl;
|
||||||
|
else
|
||||||
|
throw 1;
|
||||||
}
|
}
|
||||||
catch (int e)
|
catch (int &e)
|
||||||
{
|
{
|
||||||
cout << "dynamic_cast 将 Dog 转换为 Animal 失败" << endl
|
cout << "dynamic_cast 将 Dog 转换为 Animal 失败" << endl;
|
||||||
<< e << endl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue