473,698 Members | 2,344 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Calling the base class constructor

Hello,

I was wondering how I could call the base class constructor from a derived
class constructor. In Java I could do something like

super(parameter );

I tried

base(parameter) ;

in C# but it doesn't compile. Any ideas?

Thanks in advance!

--
Jo Vermeulen
Student Computer Science at the tUL
email: jo@lumumba.luc. ac.be
www: http://lumumba.luc.ac.be/jo
Nov 16 '05 #1
7 37704
Jo Vermeulen <jo@lumumba.luc .ac.be> wrote:
I was wondering how I could call the base class constructor from a derived
class constructor. In Java I could do something like

super(parameter );

I tried

base(parameter) ;

in C# but it doesn't compile. Any ideas?


You do base (parameter) but in a different place:

public Derived() : base (...)
{
}

See http://www.pobox.com/~skeet/csharp/constructors.html for more
information.

--
Jon Skeet - <sk***@pobox.co m>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Nov 16 '05 #2
Example :

public class BaseClass
{
public BaseClass(int i, int j)
{
...
}
}

public class DerivedClass : BaseClass
{
public DerivedClass(in t i, int j, int k) : base(i, j) //this is
where you call base constructor
{
...
}
}

"Jo Vermeulen" <jo@lumumba.luc .ac.be> wrote in message
news:pa******** *************** *****@lumumba.l uc.ac.be...
Hello,

I was wondering how I could call the base class constructor from a derived
class constructor. In Java I could do something like

super(parameter );

I tried

base(parameter) ;

in C# but it doesn't compile. Any ideas?

Thanks in advance!

--
Jo Vermeulen
Student Computer Science at the tUL
email: jo@lumumba.luc. ac.be
www: http://lumumba.luc.ac.be/jo

Nov 16 '05 #3
Op Tue, 25 May 2004 13:06:43 +0100, schreef Jon Skeet[ C# MVP]:
Jo Vermeulen <jo@lumumba.luc .ac.be> wrote:
You do base (parameter) but in a different place:

public Derived() : base (...)
{
}

See http://www.pobox.com/~skeet/csharp/constructors.html for more
information.


Oh thanks, that's like C++ then.

Kind regards,

--
Jo Vermeulen
Student Computer Science at the tUL
email: jo@lumumba.luc. ac.be
www: http://lumumba.luc.ac.be/jo
Nov 16 '05 #4
> > I was wondering how I could call the base class constructor from a
derived
class constructor. In Java I could do something like

super(parameter );

I tried

base(parameter) ;

in C# but it doesn't compile. Any ideas?


You do base (parameter) but in a different place:

public Derived() : base (...)
{
}

See http://www.pobox.com/~skeet/csharp/constructors.html for more
information.

I've never understood why this special syntax is used here. Why not do it
like java and allow base(param);?
This would give you the freedom to do parameter processing before calling
the base ctor or you could do a try{}catch around the base()-call in future
versions of c#.

--
cody

Freeware Tools, Games and Humour
http://www.deutronium.de.vu || http://www.deutronium.tk
Nov 16 '05 #5
cody <no************ ****@gmx.net> wrote:
See http://www.pobox.com/~skeet/csharp/constructors.html for more
information.


I've never understood why this special syntax is used here. Why not do it
like java and allow base(param);?
This would give you the freedom to do parameter processing before calling
the base ctor or you could do a try{}catch around the base()-call in future
versions of c#.


Just having the Java syntax wouldn't allow that - Java doesn't allow
anything else to happen before the constructor is called either.

For parameter processing, the normal approach is to write a static
method which massages the parameters appropriately, and use

public Foo(int x) : base (Massage(x))
{
....
}

--
Jon Skeet - <sk***@pobox.co m>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Nov 16 '05 #6
> > I've never understood why this special syntax is used here. Why not do
it
like java and allow base(param);?
This would give you the freedom to do parameter processing before calling the base ctor or you could do a try{}catch around the base()-call in future versions of c#.
Just having the Java syntax wouldn't allow that - Java doesn't allow
anything else to happen before the constructor is called either.


I know, but this syntax would allow extensions for C# compilers in future to
do something like:

public GifFile(string s)
{
try
{
base (GetCurrentPath () + s + ".gif");
}
catch (IOException e)
{
base(); // call the empty ctor to create empty GIF which can be
filled dynamically
}
}

Theoretically this would bee possible, MSIL allows executing code before
ctor is called and call to multiple base ctors.
For parameter processing, the normal approach is to write a static
method which massages the parameters appropriately, and use

public Foo(int x) : base (Massage(x))
{
...
}


Good idea but it requires an additional method.

--
cody

[Freeware, Games and Humor]
www.deutronium.de.vu || www.deutronium.tk
Nov 16 '05 #7
cody <pl************ *************@g mx.de> wrote:
I know, but this syntax would allow extensions for C# compilers in future to
do something like:

public GifFile(string s)
{
try
{
base (GetCurrentPath () + s + ".gif");
}
catch (IOException e)
{
base(); // call the empty ctor to create empty GIF which can be
filled dynamically
}
}

Theoretically this would bee possible, MSIL allows executing code before
ctor is called and call to multiple base ctors.


It would allow for that syntax, yes - but whether they really want to
be encouraging that is a different matter.
For parameter processing, the normal approach is to write a static
method which massages the parameters appropriately, and use

public Foo(int x) : base (Massage(x))
{
...
}


Good idea but it requires an additional method.


Sure - I was just giving a workaround for the current restrictions in
some cases.

--
Jon Skeet - <sk***@pobox.co m>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
Nov 16 '05 #8

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

12
5805
by: st_ev_fe | last post by:
I've noticed that when constructing a subclass, the base class get's it's contructors called. Is there some way to avoid this? The base class has one variable, which gets initialised to 0. The subclass's constructor sets this variable to a real value. So first the variable is set to 0, the variable is never used before it once again gets set to a real value. It's a waste. Any ideas anyone?
3
2608
by: BDB | last post by:
Hi, I'm trying to call a base class' constructor. This is giving me an error: Use of keyword 'base' is not valid in this context. .... public class B : A { B( int i )
4
5242
by: Jeff | last post by:
The derived class below passes a reference to an object in its own class to its base calss constructor. The code compiles and will run successfully as long as the base class constructor does not attempt to access the object -- since m_object is not actually created and initizialized until after the base constructor has been called. Any thoughts on the practice below? class Base { public:
4
3953
by: Fedor Semenov | last post by:
How can I call a base class' constructor from a derived class. Suppose I have: class Button // Base class { public: Button(void) { // Register classes, create the button, etc. } };
4
14795
by: ali | last post by:
Hi, I am new to C++ and trying to understand how to work on Inheritance and Operator overloading. I understand that the derived class can pass the base class constructor in its constructor definition as following code: Car::Car(int id, int colorID, int type):Vehicle(id, colorID) { this->type = type;
3
22512
by: Richard Coltrane | last post by:
Hi there, In vb.net, if i inherit from a class then the first i generally do in a sub classes contructor is MyBase.New(..); Whats the pattern in C#? It seems to do these things automatically; I didn't think C# did "anything" automatically? Thanks Richard
5
3901
by: desktop | last post by:
I am reading a text that says: "The derived-class constructor initializer names its base-class followed by a (possibly empty) list of arguments. These arguments are the initial values to use in constructing the base-class part; the serve to select the base-class constructor to run in order to initialize the base". I have then made this example: #include <string>
11
18336
by: Rahul | last post by:
Hi Everyone, While working with Java, i came across super() which passes values to base class constructor from derived class constructor. I was wondering if this could be implemented in c++ by any mechanism as super is not supported by c++, atleast by MS vc++ 6.0.
0
8680
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9169
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
1
8899
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
8871
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
1
6528
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5861
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
4622
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
2
2335
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
3
2007
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.