147-牛客网C++刷题12

本文介绍了C++中的主函数规范,强调了其名称默认为main,且必须有且只有一个。接着讲解了getchar、getch和getche的区别,包括它们在输入处理和回显方面的差异。此外,讨论了C++中的函数、运算符重载、友元函数和虚函数的概念,以及静态多态和动态多态的区分。最后,提到了位操作的应用、初始化列表的执行顺序、类模板的实例化以及C++代码中常见的构造函数和函数声明的误用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.对C++中主函数的描述正确的是?

A.名称为main,可为多个
B.名称不限,可为多个
C.名称为main,必须有且只有一个
D.名称默认是main可以通过编译器修改,但是必须有且只有一个

答案:D

2.getchar
getchar由宏实现:#define getchar() getc(stdin)。
getchar有一个int型的返回值。
当程序调用getchar时,程序就等着用户按键。用户输入的字符被存放在键盘缓冲区中。直到用户按回车为止(回车字符也放在缓冲区中)。当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符getchar函数的返回值是用户输入的字符的ASCII码,若文件结尾(End-Of-File)则返回-1(EOF),且将用户输入的字符回显到屏幕。如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。也就是说,后续的getchar调用不会等待用户按键,而直接读取缓冲区中的字符,直到缓冲区中的字符读完后,才等待用户按键。

getch
getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,getch返回值是用户输入的ASCII码,出错返回-1。输入的字符不会回显在屏幕上,getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行。
这个版本忽略了个重点,getch()是非缓冲输入函数,就是不能用getch()来接受缓冲区已存在的字符,如以下C++程序段,运行时如果输入1 2 3 a时必须用getchar()才能在后面程序获得正常输入,即使先前已经恢复流了,此处用getch()是万万不行的。

getche
这个函数与前两上类似,功能也相近,都是输入一个字符,返回值同样是输入字符的ASCII码,但不同的是,此函数在输入后立即从控制台取字符,不以回车为结束(带回显)

3.函数是一种特殊的数据类型

4.不能被重载的运算符
1、. (成员访问运算符)
2、.
(成员指针访问运算符)
3、:: (域运算符)
4、sizeof(长度运算符)
5、?: (条件运算符)
*

记忆方法:只要带.就不能重载

5.一个类的友元函数能够访问类的所有成员

6.实现运行时的多态性要使用虚函数
多态有静态多态(编译时)和动态多态(运行时),静态多态主要实现了函数的重载和运算符的重载,动态时的多态主要实现了虚函数

7.x = x & (x - 1);是统计1的个数 x = x | (x - 1); 是统计0的个数

8.初始化列表的执行顺序是变量的声明顺序

9.类模板的使用实际上是类模板实例化成一个具体的类

10.下列代码编译时会产生错误的是?

在这里插入图片描述
答案:语句4

解析:
foo a(10);//调用有参数的构造函数
foo b;//调用无参数的构造函数
foo b();//这是一个声明,不是在构造对象

语句1 会调用有参数的构造函数
语句2 是调用对象a中的fun函数
语句3 应该为Foo b(),这是一个函数声明!
语句4 没有b这个对象,也就没有 fun 函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值