Why do class destructor need to be defined as protected?

Source: Internet
Author: User
Tags protected constructor

 

For objects in the heap, we usually use new/delete to create/destroy objects. When new is called, it automatically calls the constructor of the corresponding class. Similarly, when delete is called, it automatically calls the corresponding class destructor. When we generate objects in the stack, the process described above is automatically completed. That is, we do not need to explicitly call new/delete. The premise is that the class construction/destructor are all public.

 

However, how can we implement it when we want to prohibit the generation of objects in the stack?

 

Will the constructor be set to private rows? No! In this way, objects cannot be generated in stacks, but they cannot be generated in stacks.

 

Do I set the destructor to private rows? Bad! In this way, although stack objects are restricted, inheritance is also restricted.

 

Set the destructor to the protected row? Yes!

 

For example:

 

Class

 

{

 

Protected:

 

A (){}

 

~ A (){}

 

Public:

 

Static A * create ()

 

{Return new A (); // call the protected constructor}

 

Void destroy ()

 

{Delete this; // call the protected destructor}

 

};

 

We can use it like this:

 

A * pa = A: create ();

 

Pa-> destroy ();

From: huzzyy's column

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.