C++问答锦集
总阅读次
- 口头问题?
// mark
- 继承跟覆盖的区别??
在read、write前要写polling
析构函数?
构造函数和析构函数分别用于对象的初始化和释放,当对象生成或终止时由系统自动调用。构造函数?
每个类都分别定义了它的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫作构造函数(constructor)exit(0);类里函数结尾有这个,会直接退出程序不再执行下一个类的成员函数?
正常运行程序并退出程序;
- C++中类成员函数 中可以调用其他成员函数吗?如果可以怎么操作呢?
答:可以,使用时:类名::函数名
即可
- 回调、跑线程、调度、GUI、主控有2个回调(函数)
C++primer Plus(第6版)课后练习题
2.6复习以及编程练习
1.C++程序的模块叫什么?
答:
他们叫作函数
- 下面的预处理编译器指定是做是用的?
1
答:
这将导致在最终编译之前,使用iostream文件的内容替该编译指令
下面的语句是做什么用的?
1
using namespace std;
答:
它使得可以使用std名称空间中的定义
- 什么语句可以用来打印短剧”Hello,world然后开始新的一行?
答:
1 | cout <<"Hello,world"<<endl; |
或者
1 | cout <<"Hello,world\n"; |
- 什么语句可以用来创建名为chesses的整数变量?
答:1
int cheeses;
- 什么语句可以用来将值32赋给变量cheeses?
答:
1 | int cheeses=32; |
- 什么语句可以用来将从键盘输入的值读入变量cheeses中?
答:
1 | cin>>cheeses; |
什么语句可以用来打印”We have X varieties of cheese,”,其中X为变量cheeses的当前值。
答:1
cout <<"We have" <<chesses<<"varieties of chess\n";
下面函数原型指出了关于函数的哪些信息?
1
2
3int frop(double t);
void rattle(int n);
int prune(void);答:
包含了函数:返回值类型 函数名 参数类型
- 定义函数时,在什么情况下不必使用关键字return ?
答:
无返回值类型
- 架设您编写的main()函数包含了如下代码:答:
1
cout <<"Please enter your PIN";
很可能没有包含域名空间代码;
修复方法
- 在main函数外面填写
1
using namesppace std;
- 在main函数里中使用
1
using std::cout;
- 在需要使用名称空间std中的元素使用前缀std:: 如
1
std::cout<<"I'm using cout and endl from the std namespace"<<std::endl;
- unsigned char data[10] ;
unsigned char data2[10];
与unsigned char *data[10] ;
的区别
区别就是unsigned char *data[10]
每个元素都是指针
unsigned char 跟char区别?
char能表示
-128~127
, unsigned char没有符号位,因此能表示0~255,这个好理解,8个bit,最多256种情况
,因此无论如何都能表示256个数字。轮询
polling,轮询的作用??
http://blog.chinaunix.net/uid-20269725-id-2990009.html
- 编译器不检查数组越界问题
数组空间以及存储问题
//int arr[] = { 1,2,3,4,5,6 };
int arr[3];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
arr[5] = 6;
printf(“%d!!!\n”, sizeof(arr) / sizeof(arr[0]));
解决:数组越界编译器不会报错
程序员的职责是保证不越界
而不是追问越界之后会发生什么
1 逻辑判断中确定某数在某个范围内。
比如判断数c在[a,b]区间内可以写作
(a<=c) && (c <= b)
- C++中printf在哪个头文件里?C++中如何输出二进制?
在这个头文件中有printf
1 |
C++primer里的问题
第五版
- 类型int、long、long long和short的区别是什么?无符号类型和带符号类型的区别是什么?float和double的区别是什么?
答:
他们的区别是最小尺寸不同,一个int至少和一个short一样大,一个long至少和一个int一样大,一个long long至少和一个long一样大。
无符号(unsigned)只能表示大于等于0的值。
- 说明指针和引用的主要区别
P51 练习2.3.2
指针是变量,指针不一定在声明时赋初值,而引用则在声明时赋初值;
指针可以再次被赋值其它变量,而应用一旦绑定变量则不能再绑定其它变量;
- 指针赋值问题
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using std::cout;
using std::endl;
int main()
{
int a = 4;
int change = 5;
/*1. 常量指针*/
//const int * b = &a;
int *b;
*b= 23;
cout << *b << endl;
cout << "************************************************" << endl;
}
这段代码有什么错误?在WSL/VS2015下不能运行,但是在fedora环境下却又可以正常运行
答:
指针要么是在初始化的时候进行赋值,如:char *p = "hello world!";
要么在之后将指针指向一个已经初始化的内存空间,因为只定义而未初始化的指针不会指向任何内存空间,是不能对指针指向的地方进行赋值的。
这就是为什么如果只定义了指针,而为初始化时要使用Xalloc或者new来申请空间。