销毁调用实例
Destroying the Invoking Instance
我是 OOP 领域的新手,因为没有更好的术语。
所以这是一个 class 示例
class Example{
public:
Example(const char *);
~Example(); //Calls Destroy in Body
Example & copy(const char *);
Example & copy(const Example &);
private:
void destroy();
char * data;
unsigned int size;
};
这是我在下面谈论的临时对象的示例。
Example & Example::copy(const Example & oldString) {
size = oldString.getSize();
data = new(std::nothrow) char[size];
if (data != NULL){
for (int i = 0; i <= size; i++){
data[i] = oldString.data[i];
}
}
else{
std::cout << "Data could not be initiallized with a size of" << oldString.getSize() << std::endl;
}
destroy();
return *this;
}
Example & Example::copy(const char * oldString){
Example newCopyString(oldString);
copy(newCopyString);
return *this;
}
有许多函数可以创建临时对象以将传入的 char *
转换为 Example
对象。
所以我需要一种方法来删除 copy(const char * oldString)
中的这个对象。
如问题所述,我正在尝试 delete
调用实例,但我不知道如何。
从法律上讲,一个物体可以通过
自杀
delete this;
将此作为良好做法推荐是完全不同的事情...一般来说这不是一个好主意,它可能表明您组织内存管理的方式存在问题。
我是 OOP 领域的新手,因为没有更好的术语。
所以这是一个 class 示例
class Example{
public:
Example(const char *);
~Example(); //Calls Destroy in Body
Example & copy(const char *);
Example & copy(const Example &);
private:
void destroy();
char * data;
unsigned int size;
};
这是我在下面谈论的临时对象的示例。
Example & Example::copy(const Example & oldString) {
size = oldString.getSize();
data = new(std::nothrow) char[size];
if (data != NULL){
for (int i = 0; i <= size; i++){
data[i] = oldString.data[i];
}
}
else{
std::cout << "Data could not be initiallized with a size of" << oldString.getSize() << std::endl;
}
destroy();
return *this;
}
Example & Example::copy(const char * oldString){
Example newCopyString(oldString);
copy(newCopyString);
return *this;
}
有许多函数可以创建临时对象以将传入的 char *
转换为 Example
对象。
所以我需要一种方法来删除 copy(const char * oldString)
中的这个对象。
如问题所述,我正在尝试 delete
调用实例,但我不知道如何。
从法律上讲,一个物体可以通过
自杀delete this;
将此作为良好做法推荐是完全不同的事情...一般来说这不是一个好主意,它可能表明您组织内存管理的方式存在问题。