您的位置:首页 > 编程语言 > C语言/C++

C、C++易错知识点杂记(3)

2012-05-10 09:17 239 查看

下面的代码编译时,哪行会报错?

struct Test {
Test (int) {}
Test () {}
void fun () {}
};

int main()
{
Test a(1);     //语句 1
a.fun();       //语句 2

Test b();      //语句 3
b.fun();       //语句 4
}


答案:语句 4 会报错:error: request for member `fun' in `b', which is of non-class type `Test ()()'

解析:实际上语句3声明了一个返回Test类对象的函数,而不是Test类的对象。所以语句4会报错。

类中常量必须声明为static类型

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

答案:可以。

析构函数设为virtual的意义

当一个类的析构函数被设为virtual类型,则所有从此类派生的子类的析构函数都被自动设为virtual。这可以保证用父类指针动态new子类实例时,在delete父类指针时,子类的析构函数被调用,防止内存泄露。

析构函数可以是虚函数,但是构造函数不可以。

对于一个空类,编译器默认产生4个成员函数:默认构造函数、析构函数、拷贝构造函数和赋值函数。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ c fun 编译器 delete struct