1,指针()、取地址(&)、解引用()与引用(&)的区别;
答疑:使用引用有何优点? 在传参的时候,使用指针传参,编译器需要给指针另行分配存储单元,存储一个该指针的副本,在函数中对这个副本进行操作; 而使用引用传参,编译器就不需要分配存储空间和保存副本了,函数将直接对实参进行操作。 所以使用引用使得程序的运行速度更快,执行效率更高。
2,运算符的重载
io操作符必须是非成员函数,只能是友元函数; 运算符重载为成员函数,第一个参数必须是本类的对象。而<<和>>的第一个操作数一定是ostream类型,所以<<只能重载为友元函数。 设计类时常常需要重载运算符,我发现重载输入输出流时都使用友元函数,为什么不用类成员函数呢? 张宇老师说过,“能不能用,用了再说”,于是我用了。于是被编译器告知不能用,还告诉我是因为参数太多了。 这是为什么呢?有人说我这是类成员函数,只能有一个参数,因为另一个默认的参数是类对象自身。 我觉得还挺有道理的,并不是说类成员函数只能有一个参数, 只是需要两个操作数的操作符如+-*/<<,>>等如果申明为类成员函数时,第一个参数默认为类对象本身了。 这也是+-就能在类成员函数中重载的原因。 参考:www.bilibili.com/video/BV1AE…
3,i++,++i,++i++,i++++i,i+++i++的区别;
4,问题解决: multiple definition of XXX;
此问题出自我在定义vector有关函数时,将函数声明在,h文件中,在method文件中写时出现的,
但在吧method文件删去,在.h中写后,就没报错了。
(queue同上)
是因为它们是容器的原因吗?
参考:www.bilibili.com/video/BV1RE…
5.什么时候面对对象,为什么说没有面对对象很多事情都不好办?
6,声明二维向量时,第二维的类型跟第一维的一样? PS:(顺便)B站 www.bilibili.com/video/BV1WE… 上关于迭代法的遍历需要去理解一些
7.cpp里的友元函数怎么使用?
8.构造函数的多种声明方法。
为什么我没写构造函数时,可以直接声明成员变量,声明后就必须让我用构造函数初始化它才行? 我明明也声明了空的构造函数了。 好像是因为还需要在空构造函数里至少给一个变量赋值。
Tip:在类里声明的成员变量建议在前加 或m ,以表示这是成员变量,避免和其他人的命名冲突
9.C++中头文件(.h)和源文件(.cpp)都应该写些什么?
参考:www.cnblogs.com/fenghuan/p/…
10.关于c++里面引用头文件尖括号和双引号的使用
用include 引用头文件时,双引号和尖括号的区别: ①双引号:引用非标准库的头文件,编译器首先在程序源文件所在目录查找, 如果未找到,则去系统默认目录查找,通常用于引用用户自定义的头文件。
②尖扩号:只在系统默认目录(在Linux系统中通常为/usr/include目录)或者尖括号内的路径查找, 通常用于引用标准库中自带的头文件。 综上,标准库自带的头文件既可以用双引号也可以用尖括号,不过习惯使用尖括号,用户自定义的头文件只能用双引号。
一般情况下 这么用:自己写的用双引号,第三方库或者系统的库的头文件用尖括号。要不然经常会出现乱七八糟的错误。 我习惯用双引号。结果今天在使用mysql的库函数的头文件的时候也用双引号,虽然在附加依赖项里面添加了头文件的路径,最后却被一个找不到头文件的错误搞晕了。 所以切记,只有自己写的用双引号
11.为什么我cpp在用继承之后的类中,总是不能再另一个文件里定义以声明的函数?
12.类中静态变量的初始化与赋值。
13.#ifndef PEOPLE_H #define PEOPLE_H 是可以任意命名吗?
14.句柄定义&&模板定义
15.链表就是先声明了一个头和尾,然后在其中不断的加入新的点(暂时的理解)
js.1..插一点: 在审查元素(f12)下,consol中输入document.querySelector('video').playbackRate = ** ; 可以让视频**倍速播放,亲测有用。
16.开始看数据结构了,为什么老师说,在没用cpp的封装下,单链表不适合加入尾指针?
17.关于输入流
scanf读取标准输入流会把‘\n’读入,用gets则不会,但是gets操作或有溢出的风险,它的改良版可以使用fgets(char*,int,file*),通过int来指定输入的字符数量; 示例:
while (1)
{
printf("start\n");
// gets(arr);
scanf("%c",&arr[0]);
puts(arr);
printf("end\n");
}