Which constructor gets called while i create an array of , C/C++ Programming

Assignment Help:

Which constructor gets called while I create an array of Fred objects?


Related Discussions:- Which constructor gets called while i create an array of

Calculate the average assignment grade, 1. The main program must be in a fi...

1. The main program must be in a file called A4.cpp 2. The data must be read in from a data file.  The user must enter the filename.  A sample data file will be provided on Mood

Write a program to calculate the average of ten numbers, Write a program to...

Write a program to calculate the average of ten numbers       #include stdio.h     /* Only this header is needed since only IO are used */     void main()     {          char

Poop, hwat is the area fsdjlakl;aeklfjtealrtl;gka

hwat is the area fsdjlakl;aeklfjtealrtl;gka

Define the increment and decrement operators in c language, Define the Incr...

Define the Increment and Decrement Operators in c language? C offers two special operators -and ++ called decrement and increment operators respectively and these are unary ope

Explain processing a data file, Explain Processing A Data File? Mainly ...

Explain Processing A Data File? Mainly data file applications needs that a data file be altered as it is being processed. For instance in an application involving the processin

What is the difference between = symbol and = = symbol, What is the differe...

What is the difference between = symbol and == symbol? - The = symbol is generally used in mathematical operations. It's used to assign a value to a given variable whereas the

Program to compute quadratic polynomial, Write a function that computes f(x...

Write a function that computes f(x) for a quadratic polynomial in x, such as the one in assignment 3. Use the function to plot f(x) from -10 to +10.

Create a c project, The project will include Arena models (only .doe files)...

The project will include Arena models (only .doe files) and MSWord document for the report. Thereport must contain the following sections: 1. Introduction: (a)    Statemen

Define variable declaration in c++, Variable Declaration This declarati...

Variable Declaration This declaration of variables in the C language is permitted only in the starting of their block, prior to executable program statements. In C++ declaratio

3/15/2013 5:58:52 AM

A: Fred''s default constructor

class Fred { public: Fred();

...

};

int main()

{

Fred a[10];  calls the default constructor 10 times

Fred* p = new Fred[10]; calls default constructor 10 times

...

}

If your class doesn''t contain a default constructor, you''ll get a compile-time error while you try to create an array by using the above simple syntax:

class Fred {

public:

Fred(int i, int j); suppose there is no default constructor

...

};

int main()

{

Fred a[10]; ERROR: Fred doesn''t contain a default constructor

Fred* p = new Fred[10]; ERROR: Fred doesn''t contain a default constructor

...

}

Though, even if your class already contain a default constructor, you must try to use std::vector instead of an array (arrays are evil). Std::vector allows you decide to use any constructor, not only the default constructor:

#include int main()

{

std::vector a(10, Fred(5,7));  the 10 Fred objects in std::vector a will be initialized along with Fred(5,7)

...

}

Although you have to use a std::vector instead of an array, there are times while an array may be the right thing to do, and for those, you may need the "explicit initialization of arrays" syntax. Here''s how:

class Fred {

public:

Fred(int i, int j);  assume there is no default constructor

...

};

int main()

{

Fred a[10] = {

Fred(5,7), Fred(5,7), Fred(5,7), Fred(5,7), Fred(5,7), // The 10 Fred objects are

Fred(5,7), Fred(5,7), Fred(5,7), Fred(5,7), Fred(5,7) // initialized using Fred(5,7)

};

...

}

Certainly you don''t contain to do Fred(5,7) for every entry you can put in any numbers you wish, even parameters or other variables.

Lastly, you can use placement-new to initialize manually the elements of the array. Warning: it''s unattractive: the raw array can''t be of type Fred, so you''ll require a bunch of pointer-casts to do things such as compute array index operations. Warning: its compiler- and hardware-dependent: you''ll require making sure the storage is aligned along with an alignment i.e. at least as strict as is needed for objects of class Fred. Warning: it''s boring to make it exception-safe: you''ll require to manually destructing the elements, by including in the case while an exception is thrown part-way through the loop which calls the constructors. But if you really wish to do it anyway, read up on placement- new. (BTW placement-new is like magic which is used inside of std::vector. The difficulty of getting everything right is still another reason to use std::vector.)

By the way, did I ever denote that arrays are wicked? Or did I denote that you have to use a std::vector unless there is a compelling cause to use an array?

 

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd