how to initialize dynamic object array
what if i create array of objects dynamically , then how to initialize instance data members . Because at the time of using new keyword only array dimension can be mentioned not the arguments for constructor.
c++ arrays constructor new-operator
add a comment |
what if i create array of objects dynamically , then how to initialize instance data members . Because at the time of using new keyword only array dimension can be mentioned not the arguments for constructor.
c++ arrays constructor new-operator
7
Usestd::vector
and spare your sanity.
– NathanOliver
Nov 21 '18 at 16:14
add a comment |
what if i create array of objects dynamically , then how to initialize instance data members . Because at the time of using new keyword only array dimension can be mentioned not the arguments for constructor.
c++ arrays constructor new-operator
what if i create array of objects dynamically , then how to initialize instance data members . Because at the time of using new keyword only array dimension can be mentioned not the arguments for constructor.
c++ arrays constructor new-operator
c++ arrays constructor new-operator
asked Nov 21 '18 at 16:12
YUVRAJ SINGHYUVRAJ SINGH
1
1
7
Usestd::vector
and spare your sanity.
– NathanOliver
Nov 21 '18 at 16:14
add a comment |
7
Usestd::vector
and spare your sanity.
– NathanOliver
Nov 21 '18 at 16:14
7
7
Use
std::vector
and spare your sanity.– NathanOliver
Nov 21 '18 at 16:14
Use
std::vector
and spare your sanity.– NathanOliver
Nov 21 '18 at 16:14
add a comment |
1 Answer
1
active
oldest
votes
Because at the time of using new keyword only array dimension can be mentioned not the arguments for constructor.
The canonical way in the c++ language is to use std::vector
:
std::vector<int> array(10, 42);
// ^ ^
// | | the value
// | the size
Another way to initialize the std::vector
with different values is to use a std::initializer_list
like so:
std::vector<int> array = { 1, 2 , 3, 4, 5, 6 , 55, 0, -2, 42, -16 };
Note:
In c++ you should use new
and delete
only for very rare cases in your own code. These are really advanced and you have to be 100% sure that your use case really demands to do that.
Manual memory management is usually not necessary at all, and the c++ standard library provides
- a very broad collection of Container classes
- a number of Smart pointer classes
which relieve you from all of the pitfalls of manual dynamic memory management.
Just use that stuff, anyone who demands you to do something else is most probably incompetent, or was fooled by myths telling that using the stuff from the standard library would imply a significant performance impact.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53416195%2fhow-to-initialize-dynamic-object-array%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Because at the time of using new keyword only array dimension can be mentioned not the arguments for constructor.
The canonical way in the c++ language is to use std::vector
:
std::vector<int> array(10, 42);
// ^ ^
// | | the value
// | the size
Another way to initialize the std::vector
with different values is to use a std::initializer_list
like so:
std::vector<int> array = { 1, 2 , 3, 4, 5, 6 , 55, 0, -2, 42, -16 };
Note:
In c++ you should use new
and delete
only for very rare cases in your own code. These are really advanced and you have to be 100% sure that your use case really demands to do that.
Manual memory management is usually not necessary at all, and the c++ standard library provides
- a very broad collection of Container classes
- a number of Smart pointer classes
which relieve you from all of the pitfalls of manual dynamic memory management.
Just use that stuff, anyone who demands you to do something else is most probably incompetent, or was fooled by myths telling that using the stuff from the standard library would imply a significant performance impact.
add a comment |
Because at the time of using new keyword only array dimension can be mentioned not the arguments for constructor.
The canonical way in the c++ language is to use std::vector
:
std::vector<int> array(10, 42);
// ^ ^
// | | the value
// | the size
Another way to initialize the std::vector
with different values is to use a std::initializer_list
like so:
std::vector<int> array = { 1, 2 , 3, 4, 5, 6 , 55, 0, -2, 42, -16 };
Note:
In c++ you should use new
and delete
only for very rare cases in your own code. These are really advanced and you have to be 100% sure that your use case really demands to do that.
Manual memory management is usually not necessary at all, and the c++ standard library provides
- a very broad collection of Container classes
- a number of Smart pointer classes
which relieve you from all of the pitfalls of manual dynamic memory management.
Just use that stuff, anyone who demands you to do something else is most probably incompetent, or was fooled by myths telling that using the stuff from the standard library would imply a significant performance impact.
add a comment |
Because at the time of using new keyword only array dimension can be mentioned not the arguments for constructor.
The canonical way in the c++ language is to use std::vector
:
std::vector<int> array(10, 42);
// ^ ^
// | | the value
// | the size
Another way to initialize the std::vector
with different values is to use a std::initializer_list
like so:
std::vector<int> array = { 1, 2 , 3, 4, 5, 6 , 55, 0, -2, 42, -16 };
Note:
In c++ you should use new
and delete
only for very rare cases in your own code. These are really advanced and you have to be 100% sure that your use case really demands to do that.
Manual memory management is usually not necessary at all, and the c++ standard library provides
- a very broad collection of Container classes
- a number of Smart pointer classes
which relieve you from all of the pitfalls of manual dynamic memory management.
Just use that stuff, anyone who demands you to do something else is most probably incompetent, or was fooled by myths telling that using the stuff from the standard library would imply a significant performance impact.
Because at the time of using new keyword only array dimension can be mentioned not the arguments for constructor.
The canonical way in the c++ language is to use std::vector
:
std::vector<int> array(10, 42);
// ^ ^
// | | the value
// | the size
Another way to initialize the std::vector
with different values is to use a std::initializer_list
like so:
std::vector<int> array = { 1, 2 , 3, 4, 5, 6 , 55, 0, -2, 42, -16 };
Note:
In c++ you should use new
and delete
only for very rare cases in your own code. These are really advanced and you have to be 100% sure that your use case really demands to do that.
Manual memory management is usually not necessary at all, and the c++ standard library provides
- a very broad collection of Container classes
- a number of Smart pointer classes
which relieve you from all of the pitfalls of manual dynamic memory management.
Just use that stuff, anyone who demands you to do something else is most probably incompetent, or was fooled by myths telling that using the stuff from the standard library would imply a significant performance impact.
edited Nov 21 '18 at 18:23
answered Nov 21 '18 at 18:06
πάντα ῥεῖπάντα ῥεῖ
72.3k974137
72.3k974137
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53416195%2fhow-to-initialize-dynamic-object-array%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
7
Use
std::vector
and spare your sanity.– NathanOliver
Nov 21 '18 at 16:14