Click here to Skip to main content
15,906,558 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralMessage Closed Pin
10-May-23 11:26
Member 1496877110-May-23 11:26 
GeneralRe: another "everybody knows that " question on C++ Pin
Richard MacCutchan10-May-23 21:46
mveRichard MacCutchan10-May-23 21:46 
AnswerRe: another "everybody knows that " question on C++ Pin
jschell11-May-23 5:10
jschell11-May-23 5:10 
GeneralMessage Closed Pin
11-May-23 6:32
Member 1496877111-May-23 6:32 
GeneralRe: another "everybody knows that " question on C++ Pin
Richard MacCutchan11-May-23 9:05
mveRichard MacCutchan11-May-23 9:05 
RantMessage Closed Pin
12-May-23 9:35
Member 1496877112-May-23 9:35 
GeneralRe: another "everybody knows that " question on C++ Pin
OriginalGriff12-May-23 23:32
mveOriginalGriff12-May-23 23:32 
GeneralRe: another "everybody knows that " question on C++ Pin
jschell12-May-23 9:36
jschell12-May-23 9:36 
QuestionMessage Closed Pin
8-May-23 6:28
Member 149687718-May-23 6:28 
AnswerRe: C++ for loop syntax ? Pin
CPallini8-May-23 8:02
mveCPallini8-May-23 8:02 
AnswerRe: C++ for loop syntax ? Pin
Richard MacCutchan8-May-23 21:46
mveRichard MacCutchan8-May-23 21:46 
GeneralMessage Closed Pin
9-May-23 7:13
Member 149687719-May-23 7:13 
GeneralRe: C++ for loop syntax ? Pin
Richard MacCutchan9-May-23 10:11
mveRichard MacCutchan9-May-23 10:11 
GeneralRe: C++ for loop syntax ? Pin
k50549-May-23 11:29
mvek50549-May-23 11:29 
AnswerRe: C++ for loop syntax ? Pin
Gerry Schmitz10-May-23 5:02
mveGerry Schmitz10-May-23 5:02 
AnswerRe: C++ for loop syntax ? Pin
jschell10-May-23 5:34
jschell10-May-23 5:34 
QuestionTitle bar display and closing problem Pin
Jeanjean Lesage5-May-23 22:46
Jeanjean Lesage5-May-23 22:46 
AnswerRe: Title bar display and closing problem Pin
Richard MacCutchan6-May-23 0:03
mveRichard MacCutchan6-May-23 0:03 
GeneralRe: Title bar display and closing problem Pin
Jeanjean Lesage6-May-23 1:57
Jeanjean Lesage6-May-23 1:57 
QuestionCreating a pointer and asigning a variable address to it Pin
Calin Negru23-Apr-23 6:22
Calin Negru23-Apr-23 6:22 
AnswerRe: Creating a pointer and asigning a variable address to it Pin
Gerry Schmitz23-Apr-23 8:58
mveGerry Schmitz23-Apr-23 8:58 
AnswerRe: Creating a pointer and asigning a variable address to it Pin
Victor Nijegorodov23-Apr-23 20:14
Victor Nijegorodov23-Apr-23 20:14 
AnswerRe: Creating a pointer and asigning a variable address to it Pin
Richard MacCutchan23-Apr-23 21:26
mveRichard MacCutchan23-Apr-23 21:26 
GeneralRe: Creating a pointer and asigning a variable address to it Pin
Calin Negru23-Apr-23 22:39
Calin Negru23-Apr-23 22:39 
GeneralRe: Creating a pointer and asigning a variable address to it Pin
harold aptroot23-Apr-23 21:49
harold aptroot23-Apr-23 21:49 
The purpose of delete is not to delete things. What?? But I'm serious. The purpose of delete is to undo new.

As an approximation that will no doubt anger several C++ experts, you can view new as a combination of malloc and invoking the constructor, and you can view delete as a combination of invoking the destructor and free. That's not exactly literally how they work, but it's close enough that you can use that to reason about when you need them. (don't use this as an excuse to delete something that was malloc'ed)

Most of the time, if you want to get rid of something, delete is the wrong way to do it - because most things were not created by new. Trying to delete something else results at best in a failing safety check but in general corrupts the state of your application.

Most objects are destroyed implicitly, in various ways. Local variables by exiting a scope, values in containers by the container being destroyed, smart pointers do most of the rest. Explicitly using delete is occasionally necessary but it's probably better to actively avoid creating those cases. It's quite bug-prone, especially around exceptions and other non-trivial control flow.
Calin Negru wrote:
later if you use “delete” on the pointer will that delete the content of the variable too?
In the sense that its destructor is invoked (so you can implement it and delete the members that need to be deleted), yes. If you mean that in some other sense then, probably, no (but depending on what you mean).

Implementing classes with lots of raw-pointer members that you individually delete in the destructor is very mid-2000s. Typical advice is to delegate that to smart pointers and containers as much as possible, with the goal of following the Rule of Zero instead of one of the other rules-of-some-number, but sometimes you just have to do what you have to do.

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.