首页 > 试题广场 >

关于C++的说法错误的是

[不定项选择题]
关于C++的说法错误的是
  • 一个类可以有多个析构函数
  • 析构函数可以为virtual
  • 编译器不会为空类产生默认构造函数
  • 可以用free释放一个类对象
推荐
【正确答案】A C D
【解析】A 选项错误,一个类只能有一个析构函数
B 选项正确
C 选项错误,一个类如果没有指定构造函数,编译器会生成一个无参的默认构造函数
D 选项错误,free 不能用于释放一个类的对象,应该使用 delete,因为可以执行对象的析构函数,而 free 不能
 
更多C++基础专业知识讲解,点击链接即可查看
https://www.nowcoder.com/link/zxyl-cpp90
编辑于 2021-11-19 10:22:45 回复(0)
一个类只有一个析构函数且可以是虚函数,编译器会在某些时候为空类产生构造函数,free用来释放内存空间,若要释放一个对象还需调用其析构函数。
发表于 2018-09-19 22:11:56 回复(0)
有多少人选的唯一错误的答案。。。
发表于 2018-09-09 15:32:48 回复(0)
释放一个类对象还需要调用其析构函数,因此应该用delete,free不会调用析构函数
发表于 2021-01-08 09:33:36 回复(0)
1. 选项A: - 一个类只能有一个析构函数。析构函数用于在对象销毁时进行清理工作,如果有多个析构函数,编译器无法确定应该调用哪一个,所以选项A错误。 2. 选项B: - 析构函数可以为 virtual 。当使用多态时,为了确保正确地销毁派生类对象,析构函数通常应该声明为 virtual ,所以选项B正确。 3. 选项C: - 编译器会为空类产生默认构造函数、默认析构函数、默认赋值运算符和默认拷贝构造函数,所以选项C错误。 4. 选项D: - 不应该用 free 释放一个类对象。对于类对象,应该使用类的析构函数来进行清理工作,如果使用 free ,可能会导致内存泄漏和未定义行为,所以选项D错误。 答案为ACD。
发表于 2024-10-25 10:48:16 回复(0)
D选项有问题,这道题答案应该是ACD,因为基本数据类型不存在析构函数,所以直接free是可以的。
发表于 2021-11-10 02:05:58 回复(0)
一个类可以有多个构造函数,但是有且只能有一个析构函数;
存在“虚析构函数”;
发表于 2021-04-20 15:28:31 回复(0)
选项a 继承怎么说
发表于 2021-04-13 14:56:39 回复(0)
C选项 只有在4中情况下才提供构造函数 《深入理解C++对象模型》
发表于 2018-09-07 11:26:52 回复(0)