第四章类与对象错题总结

  1. 析构函数是一种函数体为空的成员函数

答案:错误
解析:析构函数的函数体也可以不为空。

class point {
  public:
  point ()
  {
    x=0;
    y=0;
  }
  ~point ()
  {
    cout<<"class point is deleted !"<<endl;
  }
  private:
  double x,y;
};

如上可知,析构函数的函数体中也可以不为空。
一般来说,析构函数的考点主要有以下这些:析构函数(Destructor)也是一种特殊的成员函数,没有返回值,不需要程序员显式调用(程序员也没法显式调用),而是在销毁对象时自动执行。构造函数的名字和类名相同,而析构函数的名字是在类名前面加一个~符号。
注意:析构函数没有参数,不能被重载,因此一个类只能有一个析构函数。如果用户没有定义,编译器会自动生成一个默认的析构函数。
析构函数的执行时机:
析构函数在对象被销毁时调用,而对象的销毁时机与它所在的内存区域有关。
在所有函数之外创建的对象是全局对象,它和全局变量类似,位于内存分区中的全局数据区,程序在结束执行时会调用这些对象的析构函数。
在函数内部创建的对象是局部对象,它和局部变量类似,位于栈区,函数执行结束时会调用这些对象的析构函数。
new 创建的对象位于堆区,通过 delete 删除时才会调用析构函数;如果没有 delete,析构函数就不会被执行。
2. 对象成员的表示与结构变量成员表示相同,使用运算符.或->。
答案:正确
解析:这里的结构变量成员指的是结构体成员变量。
3.在UML中,聚集表示为空心菱形,组合表示实心菱形。
答案:正确

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务