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 |
Explain how overloading takes place in c++?
What do you mean by translation unit in c++?
Can you Mention some Application of C/C++?
Is recursion allowed in inline functions?
Can a program run without main in c++?
Explain pass by value and pass by reference.
How do I use arrays in c++?
How can I learn c++ easily?
What is c++ array?
What are virtual functions in c++?
What is static in c++?
What is ios :: in in c++?