Do we have private destructors?
Answers were Sorted based on User's Feedback
Answer / sampurna pandey
yes, we can have both private constructor and destructor
and can use them with help of static function for example
class Base
{
static int i;
Base(){}
~Base(){}
public:
static Base *Creat_Object();
static void Destroy_Object(Base *p);
void Add()
{
cout<<i<<" Add function"<<endl;
}
};
int Base::i=0;
Base* Base::Creat_Object()
{
Base * ptr = new Base();
i=5;
return ptr;
}
void Base::Destroy_Object(Base *p)
{
delete p;
}
void main()
{
Base *temp = Base::Creat_Object();
temp->Add();
Base::Destroy_Object(temp);
}
correct me if i am wrong.
| Is This Answer Correct ? | 21 Yes | 3 No |
Answer / guest
RE: #1
You can have private constructors. It's pretty common
practice when you create a class which you want to never be
constructed with "new" from outside the class (for example,
if you have a static factory member of the class).
| Is This Answer Correct ? | 10 Yes | 1 No |
Answer / vaibhav meena
We can have Private Destructor and by using Friend Function
we can also instantiate it. :)
| Is This Answer Correct ? | 6 Yes | 0 No |
Answer / subrat
Hi all,
Please visit this url for more clarity on "Private
destructors"
http://www.codeguru.com/cpp/cpp/cpp_mfc/stl/article.php/c414
3/
| Is This Answer Correct ? | 1 Yes | 0 No |
Answer / binoy mathew
#include <iostream>
#include <stdlib.h>
class t
{
public:
t()
{
printf("in constr");
}
private: // note that constructor is private here
~t()
{
printf("in destr");
}
};
int main()
{
t *t1 = new t; // create a new obj
delete t1; // delete the obj, which calls destructor
return 0;
}
Try to compile the above code.
following error results...
[root@localhost Desktop]# g++ test.cpp
test.cpp: In function ‘int main()’:
test.cpp:13: error: ‘t::~t()’ is private
tt.cpp:: error: within this context
[root@localhost Desktop]#
....implies, we can't have destructor private.
| Is This Answer Correct ? | 1 Yes | 3 No |
Answer / shakti singh khinchi
U can't instantiate instance of that class.
| Is This Answer Correct ? | 0 Yes | 3 No |
Answer / vishwa
we cannot say it destructors are not private. because for
empty class if we use delete operator then it is going to
delete the destructor which is private.
| Is This Answer Correct ? | 0 Yes | 8 No |
Answer / thuang
In replay to Vishwa,
for empty class, compiler will supply a default constructor
and a destructor for us, their access modifiers were public.
| Is This Answer Correct ? | 0 Yes | 8 No |
Answer / pooja
no we do not have private destructors because the
destructors can be declared only in public access
specifier.
| Is This Answer Correct ? | 1 Yes | 11 No |
When does a name clash occur in c++?
Is there a new/delete equivalent of realloc?
If we declare two macro with the same identifier without doing undef the first, what will be the result? eg: #define MAX_SIZE 100 #define MAX_SIZE 200 int table1[MAX_SIZE];
Explain bubble sorting.
How can you create a virtual copy constructor?
How did c++ get its name?
What is the purpose of the "delete" operator?
What are arrays c++?
Is python better than c++?
How to defines the function in c++?
Define a pointer to a data member of the type pointer to pointer?
What is the default width for ouputting a long integer using the insertion operator?