136.异常的多态,父类对象,传递子类的引用或指针(地址)

 1 #include <iostream>
 2 using namespace std;
 3
 4 //纯虚类
 5 class error
 6 {
 7 public:
 8     //纯虚函数
 9     virtual void showerror() = 0;
10 };
11
12 class big :public error
13 {
14 public:
15     void showerror()
16     {
17         cout << "big error" << endl;
18     }
19
20 };
21
22 class small :public error
23 {
24 public:
25     void showerror()
26     {
27         cout << "small error" << endl;
28     }
29
30 };
31
32 class zero :public error
33 {
34 public:
35     void showerror()
36     {
37         cout << "zero error" << endl;
38     }
39
40 };
41
42 //抛出一个引用对象
43 class print3d
44 {
45 public:
46     print3d(double size)
47     {
48         if (size == 0)
49         {
50             throw &zero();
51         }
52         else if (size > 1000)
53         {
54             throw &big();
55         }
56         else if (size < 1)
57         {
58             throw &small();
59         }
60     }
61 };
62
63 void main()
64 {
65     try
66     {
67         print3d dg(0);
68     }
69     catch (error *p)
70     {
71         p->showerror();
72     }
73     cin.get();
74 }

原文地址:https://www.cnblogs.com/xiaochi/p/8686246.html

时间: 2024-08-03 18:12:10

136.异常的多态,父类对象,传递子类的引用或指针(地址)的相关文章

C#父类对象和子类对象之间的转化

1. 子类到父类 Chinese c = new Chinese(); Person p1 = c;  //从变量c看是一个中国人,所以可以把人的标签贴上去 2. 父类到子类 Chinese c2 = p1; //从变量p1看是一个人,不能随便把中国人的标签贴上去  不成功,必须显式转化如下,两种方式: (1)Chinese c2 = (Chinese)p1; (2)Chinese c2 =  p1 as Chinese; 上面两种方式的区别,看如下代码 p1 = new Japanese();

父类对象对子类对象方法的调用

1 import copy 2 class Dog: 3 def Eat(self): 4 print("Dog Eating...") 5 class Son: 6 def __init__(self): 7 self.height=100 8 def Eat(self): 9 print("Son Eating...") 10 class Father: 11 def LetSonEat(self,m): 12 if(isinstance(m,Son)): 13

java 父类对象 和 子类对象 的类型转换

/** * 父类对象 和 子类对象 的类型转换 */ public class TypeCast{ public static void main(String[] args){ Employee[] staff = new Employee[3]; staff[0] = new Employee(); System.out.println(staff[0]); System.out.println(staff[1]); //Manager boss0 = staff[0]; //java.la

用父类对象给子类对象赋值数据

在写毕业设计的时候遇到了一些小问题,当创建一个VO类的时候,继承原先的PO类再添加新的属性比较快捷方便,但是将PO类转换成VO类就会需要先get再set所有属性.虽然说是面向ctrl+c.ctrl+v编程,但是还是想偷懒,所以有了以下代码: /** * 将父类对象的属性值转储到子类对象中,仅限于get(is)方法set方法规范且并存,更适用于数据库实体类,不适用于功能性类 * @param <T> * @param son 子类对象 * @param father 父类对象 * @throws

Java父类对象调用子类实体:方法重写与动态调用

众所周知Java的handle和C++的ponter而不是object对应,我们很熟悉C++的父类pointer调用子类实体的例子,那么对于Java的handle是不是也可以这样呢? 这里我先给一个例子 class Father{ public void announce(){ System.out.println("Father"); } } class Child extends Father{ @Override public void announce(){ System.ou

Effective C++ Item 28 避免返回对象内部数据的引用或指针

本文为senlie原创.转载请保留此地址:http://blog.csdn.net/zhengsenlie Item 31 经验:避免返回handles(包含 references.指针.迭代器)指向对象内部.遵守这个条款可添加封装性, 帮助 const 成员函数的行为像个 const,并将发生"虚吊号码牌"(dangling handles)的可能性降至最低. 演示样例: class Point{ public: Point(int x, int y); //... void set

父类的引用对象指向子类的对象

在java的多态中,经常会看到父类的引用对象指向子类的对象,一开始很迷茫,因为按照之前所学的知识,父类的引用对象指向自身对象或者子类的引用对象指向自身对象都不难理解,因此为了方便理解,下面举了一个例子:水杯和水壶的比喻. 下面的一段代码来实现这个比喻: 1 public class Kettle { 2 public Kettle(){ 3 System.out.println("水壶容量有2升"); 4 } 5 } 6 7 public class Cup extends Kettl

c#父类对象引用指向子类与方法重写

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace csharp_test { class Parentclass { public Parentclass() { Console.WriteLine("this is parentclass's cunstructor"); } public void print() { Console.Writ

java的对象锁和对象传递

1.对象传递 在JAVA的参数传递中,有两种类型,第一种是基本类型传递,例如int,float,double等,这种是值传递,另外一种是对象传递,比如String或者自定义的类,这种是引用传递. 也就是说,基本类型传递的是一个副本,而对象传递的是对象本身. 2.锁 JAVA中,对象锁的概念,就是对对象进行加锁,每个对象都会有一个内存锁,如果加上锁以后,就只能让一个线程进行操作,在操作完成之前,其他线程无法对该对象进行再次操作. 3.例子 package com.itbuluoge.mythrea