Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: C++
Expertise: All
Feb 11, 2000

Declaring an Object With No Default Constructor as a Member of Another Class

Suppose you have a class called A, which doesn't have a default constructor, and you want to embed an instance of this class as a member of another class, B:

 
  class A
  {
  public:
    A (int n);   // no default constructor
  };

When you instantiate an ordinary object of class A, you pass an argument to its constructor like this:

 
  A a(3); // OK

However, you can't do that when declaring an instance of A as a member of another class:

 
  class B
  {
  public:
    B();
  private:
    A a(3); // error
  };

You should use a member-initialization list in the containing class's constructor to pass the embedded object's argument:

 
  class B
  {
  public:
    B() : a(3) {} // pass argument to embedded object
  private:
    A a; // no argument here
  };

Some classes have both a default constructor and a constructor that takes one or more arguments, (e.g., std::vector). With such classes, you should use a member-initialization list to invoke a constructor that takes arguments:

 
  class Document
  {
  private:
    vector <char> vc; // no argument here
  public:
    Document() : vc(80){} // similar to vector <char> vc (80)
  };
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date