// AirlineTicket.h
#include <string>
class AirlineTicket
{
public:
AirlineTicket();
~AirlineTicket();
int calculatePriceInDollars();
std::string getPassengerName();
void setPassengerName(std::string inName);
int getNumberOfMiles();
void setNumberOfMiles(int inMiles);
bool getHasEliteSuperRewardsStatus();
void setHasEliteSuperRewardsStatus(bool inStatus);
private:
std::string mPassengerName;
int mNumberOfMiles;
bool fHasEliteSuperRewardsStatus;
};
我现在想要这段代码中~AirlineTicket();
的含义是什么?
我不知道“〜”(代字号)的含义。
答案 0 :(得分:23)
它是析构函数。
当你销毁(到达范围的末尾,或者调用delete
指向对象实例的指针时)它会被调用。
答案 1 :(得分:12)
答案 2 :(得分:4)
~
表示它是析构函数,当对象超出范围时,会调用相应的析构函数。
调用析构函数时?
举个例子 -
#include <iostream>
class foo
{
public:
void checkDestructorCall() ;
~foo();
};
void foo::checkDestructorCall()
{
foo objOne; // objOne goes out of scope because of being a locally created object upon return of checkDestructorCall
}
foo:: ~foo()
{
std::cout << "Destructor called \t" << this << "\n";
}
int main()
{
foo obj; // obj goes of scope upon return of main
obj.checkDestructorCall();
return 0;
}
我的系统上的结果:
Destructor called 0xbfec7942
Destructor called 0xbfec7943
此示例仅用于指示何时调用析构函数。但是只有在类管理资源时才会编写析构函数。
当班级管理资源时?
#include <iostream>
class foo
{
int *ptr;
public:
foo() ; // Constructor
~foo() ;
};
foo:: foo()
{
ptr = new int ; // ptr is managing resources.
// This assignment can be modified to take place in initializer lists too.
}
foo:: ~foo()
{
std::cout << "Destructor called \t" << this << "\n";
delete ptr ; // Returning back the resources acquired from the free store.
// If this isn't done, program gives memory leaks.
}
int main()
{
foo *obj = new foo;
// obj is pointing to resources acquired from free store. Or the object it is pointing to lies on heap. So, we need to explicitly call delete on the pointer object.
delete obj ; // Calls the ~foo
return 0;
}
我的系统上的结果:
Destructor called 0x9b68008
在程序中,你发布了我认为不需要编写析构函数。希望它有所帮助!
答案 3 :(得分:4)
答案 4 :(得分:1)
~
引入了析构函数。之所以使用它是因为(a)它可用,ad(b)~
是“not”的一个(几个)数学符号。
答案 5 :(得分:1)
答案 6 :(得分:1)
~AirlineTicket();
是AirlineTicket类的析构函数
请参阅this link以获取进一步的参考资料
当您删除该类的对象时,将调用析构函数,以释放分配的任何内存或对象使用的资源。