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 |
Refer to a name of class or function that is defined within a namespace?
What are the differences between a struct and a class in C++?
Explain Text Manipulation Routines?
Why do we use templates?
Do you know what is overriding?
What are signs of manipulation?
How a new element can be added or pushed in a stack?
what are the characteristics of Class Members in C++?
What are the comments in c++?
What is insertion sorting?
If a base class declares a function to be virtual, and a derived class does not use the term virtual when overriding that class, is it still virtual when inherited by a third-generation class?
What language is a dll written in?