Re: [sv-bc] Can abstract class be instantiated?

From: Mike Mintz <mmintz_at_.....>
Date: Tue Jul 17 2007 - 06:00:37 PDT
Hi Surya,

Sigh. This is SystemVerilog hiding the concept of pointers. When you declare
a variable of class type, you are really only declaring a pointer.

*Even though BasePacket is abstract, it can still be used to declare a
variable:
BasePacket packets[100];

*This statement declares storage for 100 pointers. You cannot actually build
an instance of a BasePacket. The new() special member function actually
creates the instance of the class.

packets[0] = new BasePacket ();  <--Compiler error, cannot instiantiate an
abstract base class

So why is this useful? In one OOP technique, a base class can be used when
the details of the actual class are not relevant. For example, I often make
an array of "test irritators", which can be started, stopped, and asked to
report their status.  This is an abstract base class. I then derive from
test_irritator for general traffic generators, such as usb_test_irritator
and ethernet_test_irritator. Instances of these derived classes are put into
a pointer array of base classes because, by design, my test is not concerned
with the background traffic. The test is testing some feature of the chip,
but uses the background traffic to stress the chip.

There are other uses of base classes as well. Contact me off list for more
info. (my name and trusster with a com.)

Hope this helps,
Mike
**

Take Care,
Mike

On 7/17/07, Surya Pratik Saha <spsaha@cal.interrasystems.com> wrote:
>
>  Hi,
> As per 1800 LRM (section 7.19, page 93), an abstract class can not be
> instantiated.
> *An abstract class cannot be instantiated; it can only be derived.
> *
> But later, in section 7.20, it is mentioned:
> *Even though BasePacket is abstract, it can still be used to declare a
> variable:
> BasePacket packets[100];
>
> *What is the difference between an instance of a class and a variable
> declaration of class?
>
> --
> Regards
> Surya
>
>
> --
> This message has been scanned for viruses and
> dangerous content by *MailScanner* <http://www.mailscanner.info/>, and is
> believed to be clean.

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Tue Jul 17 06:01:10 2007

This archive was generated by hypermail 2.1.8 : Tue Jul 17 2007 - 06:01:25 PDT