注册 登录
编程论坛 C++教室

析构函数可以是内联函数吗?

lindayanglong 发布于 2008-09-10 17:38, 2299 次点击
析构函数可以是内联函数吗?书上说是的,还举例了,可是我按他写的出现了错误,大家看看该怎么改?
#include<iostream>
using namespace std;
class A
{
public:
    void foo()
    {cout<<"A"<<endl;}
    ~A();
}
inline A::~A()
{cout<<"inline";}

int main()
{
    A *p=new A();
    p->foo();
    delete p;
    return 0;
}
9 回复
#2
守鹤2008-09-10 18:22
类定义时,结束用分号
class   类名
{  };
#3
blueboy820062008-09-10 18:23
你这样写就行:
#include<iostream>
using namespace std;
class A
{
public:
    void foo()
    {cout<<"A"<<endl;}
   inline ~A()
   {cout<<"inline";}
};

int main()
{
    A *p=new A();
    p->foo();
    delete p;
    return 0;
}
#4
blueboy820062008-09-10 18:25
二楼说得很对啊,你原来那个没什么问题啊...
只是少个分号...
#5
newyj2008-09-10 20:07
好象前面 加不加 inline 没有太大的作用
编译器会自己选择的吧
#6
blueboy820062008-09-10 20:19
[bo][un]newyj[/un] 在 2008-9-10 20:07 的发言:[/bo]

好象前面 加不加 inline 没有太大的作用
编译器会自己选择的吧


应该是的...
#7
zzt_4282008-09-10 20:36
回复
当然可以!!
比如说
using std::cout;
class Time
{
   pulibc:
     //....
    inline ~Time()
    {
        cout << "destructor called.\n";
    }
};

内联函数一般适合用于函数体较小的,没有循环或switch的语句.可以提高执行效率.如果函数执行时间比较长,即使你声明为内联的,,编译器也当做是常规函数.析构函数一般不声明为内联的.
#8
尹迪2008-09-10 20:54
#9
p1s2008-09-11 13:10
inline只是我们给编译器的建议,未必会真的就内联了。
#10
明天更好山鹰2013-04-11 21:25
析构函数一般不声明为内联的
1