day7: homework
This commit is contained in:
		
							parent
							
								
									c127a3a81b
								
							
						
					
					
						commit
						15ae1803d7
					
				
							
								
								
									
										43
									
								
								day7/homework/h6.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								day7/homework/h6.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | |||||||
|  | // 请完成以下程序的代码,实现数组的循环迭代
 | ||||||
|  | #include <iostream> | ||||||
|  | 
 | ||||||
|  | using namespace std; | ||||||
|  | 
 | ||||||
|  | template <typename T> | ||||||
|  | class Iterator | ||||||
|  | { | ||||||
|  | public: | ||||||
|  |     T *data; | ||||||
|  |     int size; | ||||||
|  |     int currentIndex; | ||||||
|  | 
 | ||||||
|  | public: | ||||||
|  |     Iterator(T *d, int s) : data(d), size(s), currentIndex(0) {} | ||||||
|  |     T getCurrent() // 获取当前元素
 | ||||||
|  |     { | ||||||
|  |         return data[currentIndex]; | ||||||
|  |     } | ||||||
|  |     void next() // 迭代器前进的代码
 | ||||||
|  |     { | ||||||
|  |         currentIndex = (currentIndex + 1) % size; // 对 size 取余用于循环
 | ||||||
|  |     } | ||||||
|  |     void previous() // 迭代器后退的代码
 | ||||||
|  |     { | ||||||
|  |         currentIndex = (currentIndex - 1 + size) % size; // + size 用于防止负数,对 size 取余用于循环
 | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | int main() | ||||||
|  | { | ||||||
|  |     int *p = new int[5]{1, 2, 3, 4, 5}; // 创建数组
 | ||||||
|  |     Iterator<int> it(p, 5);             // 创建迭代器对象
 | ||||||
|  | 
 | ||||||
|  |     int cnt = 0; // 计数器,用于控制循环次数
 | ||||||
|  |     while (cnt++ < 5) | ||||||
|  |     { | ||||||
|  |         cout << it.getCurrent() << endl; // 输出当前元素
 | ||||||
|  |         it.next();                       // 迭代器前进
 | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return 0; | ||||||
|  | } | ||||||
							
								
								
									
										125
									
								
								day7/homework/h7.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								day7/homework/h7.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,125 @@ | |||||||
|  | /********************************************************************
 | ||||||
|  | 假设有一个基类 Animal 和两个派生类 Cat 和 Dog,它们的定义如下 : class Animal | ||||||
|  | { | ||||||
|  | public: | ||||||
|  |     virtual ~Animal() {} | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | class Cat : public Animal | ||||||
|  | { | ||||||
|  | public: | ||||||
|  |     void meow() | ||||||
|  |     { | ||||||
|  |         std::cout << "Meow!" << std::endl; | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | class Dog : public Animal | ||||||
|  | { | ||||||
|  | public: | ||||||
|  |     void bark() | ||||||
|  |     { | ||||||
|  |         std::cout << "Woof!" << std::endl; | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 请完成以下任务: | ||||||
|  | 
 | ||||||
|  | 1) 在 main 函数中创建一个 Animal 类型的指针,并使用 dynamic_cast 将其转换为 Cat 类型的指针。如果转换成功,调用 meow 函数让猫发出"Meow!"声音;如果转换失败,输出转换失败的提示信息。 | ||||||
|  | 
 | ||||||
|  | 2) 在 main 函数中创建一个 Animal 类型的指针,并使用 dynamic_cast 将其转换为 Dog 类型的指针。如果转换成功,调用 bark 函数让狗发出"Woof!"声音;如果转换失败,输出转换失败的提示信息。 | ||||||
|  | 
 | ||||||
|  | 3) 在 main 函数中创建一个 Cat 类型的指针,并使用 dynamic_cast 将其转换为 Animal 类型的指针。输出转换成功的提示信息。 | ||||||
|  | 
 | ||||||
|  | 4) 在 main 函数中创建一个 Dog 类型的指针,并使用 dynamic_cast 将其转换为 Animal 类型的指针。输出转换成功的提示信息。 | ||||||
|  | 
 | ||||||
|  | 【提示】可以尝试 | ||||||
|  | try | ||||||
|  | { | ||||||
|  | } | ||||||
|  | catch (int e) | ||||||
|  | { | ||||||
|  | } | ||||||
|  | 异常尝试捕获语法确定转换是否成功。 | ||||||
|  | ********************************************************************/ | ||||||
|  | 
 | ||||||
|  | #include <iostream> | ||||||
|  | 
 | ||||||
|  | using namespace std; | ||||||
|  | 
 | ||||||
|  | class Animal | ||||||
|  | { | ||||||
|  | public: | ||||||
|  |     virtual ~Animal() {} | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | class Cat : public Animal | ||||||
|  | { | ||||||
|  | public: | ||||||
|  |     void meow() | ||||||
|  |     { | ||||||
|  |         cout << "Meow!" << endl; | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | class Dog : public Animal | ||||||
|  | { | ||||||
|  | public: | ||||||
|  |     void bark() | ||||||
|  |     { | ||||||
|  |         cout << "Woof!" << endl; | ||||||
|  |     } | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | int main() | ||||||
|  | { | ||||||
|  |     Animal *ap = new Animal(); // 创建一个 Animal 类型的指针
 | ||||||
|  |     try | ||||||
|  |     { | ||||||
|  |         Cat *cp = dynamic_cast<Cat *>(ap); // 将其转换为 Cat 类型的指针
 | ||||||
|  |         cp->meow(); | ||||||
|  |     } | ||||||
|  |     catch (int e) | ||||||
|  |     { | ||||||
|  |         cout << "dynamic_cast 将 Animal 转换为 Cat 失败" << endl | ||||||
|  |              << e << endl; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     Animal *ap2 = new Animal(); // 创建一个 Animal 类型的指针
 | ||||||
|  |     try | ||||||
|  |     { | ||||||
|  |         Dog *dp = dynamic_cast<Dog *>(ap2); // 将其转换为 Dog 类型的指针
 | ||||||
|  |         dp->bark(); | ||||||
|  |     } | ||||||
|  |     catch (int e) | ||||||
|  |     { | ||||||
|  |         cout << "dynamic_cast 将 Animal 转换为 Dog 失败" << endl | ||||||
|  |              << e << endl; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     Cat *cp2 = new Cat(); // 创建一个 Cat 类型的指针
 | ||||||
|  |     try | ||||||
|  |     { | ||||||
|  |         Animal *ap3 = dynamic_cast<Animal *>(cp2); // 将其转换为 Animal 类型的指针
 | ||||||
|  |         cout << "dynamic_cast 将 Cat 转换为 Animal 成功" << endl; | ||||||
|  |     } | ||||||
|  |     catch (int e) | ||||||
|  |     { | ||||||
|  |         cout << "dynamic_cast 将 Cat 转换为 Animal 失败" << endl | ||||||
|  |              << e << endl; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     Dog *dp2 = new Dog(); // 创建一个 Dog 类型的指针
 | ||||||
|  |     try | ||||||
|  |     { | ||||||
|  |         Animal *ap4 = dynamic_cast<Animal *>(dp2); // 将其转换为 Animal 类型的指针
 | ||||||
|  |         cout << "dynamic_cast 将 Dog 转换为 Animal 成功" << endl; | ||||||
|  |     } | ||||||
|  |     catch (int e) | ||||||
|  |     { | ||||||
|  |         cout << "dynamic_cast 将 Dog 转换为 Animal 失败" << endl | ||||||
|  |              << e << endl; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return 0; | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user