Coursera C++ 程序设计,北京大学
作者:互联网
简单的看了一下课程内容:介绍了类,内联函数,友元函数,运算符重载,多态,虚函数,\(STL\) 等等。
这些内容之前仅有使用上的接触,并没真正理解过。需要用心学一下!
(但是感觉郭炜老师讲的没李戈老师那么有趣)
函数指针
之前学习 \(SML\) 时,一直觉得将函数以参数形式传入另一个函数这个功能很强大:C++ 中原来是靠函数指针实现的
一般的,函数的名字即为指向该函数的函数指针,我们也可以自定义指向某个函数的函数指针,格式为 函数指针名(实参表);
本质上来讲,每个函数在内存中也会占用一段空间,函数指针即指向这个函数所占内存的其实地址。所以,对函数指针进行的自加自减操作是没有意义的
bool cmp(int x, int y) {
return x > y;
}
bool (*pf)(int, int); // 声明一个函数指针:注意声明的格式!与 cmp 函数的类型以及参数类型完全一致
pf = cmp;
sort(a + 1, a + n + a, pf); // 向其他函数:这里以 sort 为例传入自定义的 cmp 函数
命令行参数
在 cmd 中使用 C++ 运行命令行时,可以通过在 main 函数中设置参数来处理命令行参数
int main(int argc, char *argv[]) {
...
}
argc
: 启动程序时,命令行参数的个数:由于可执行文件名也算作一个命令行参数,所以 argc
至少是 \(1\)
argv[]
: 注意这是一个指针数组,每个元素都是 char
类型的指针,指向某个参数字符串。也可以说是 char**
类型。
与 char (*argv)[]
区别开,后者指的是指向某个 char
一维数组的指针。
位运算
&
, |
, ~
, ^
, >>
, <<
六个按位运算符,之前都已经很熟悉,所以就不具体做笔记了
引用
我们用格式 类型名 & 引用名 = 某变量名
int n = 3;
int &r = n; // 定义了引用 r 引用了 n,r 的类型是 int &
r = 4; // 同时 n 的值也变为 4
某个变量的引用,等价于这个变量,相当于这个变量的一个别名(alias)
定义引用时一定要将其初始化为引用某个变量,并且引用一定要引用某个变量,不能引用常量和表达式
int n = 30; // 全局变量 n = 30
int &Setvalue() { return n; } // 该函数返回一个引用,引用变量 n
Setvalue() = 40;
以上的函数定义了一个引用作为函数的返回值:这样做的好处是函数可以写在赋值表达式的左侧
int n = 20;
const int &r = n; // 定义一个常引用
r = 30; // wrong!
n = 30;
在定义引用时,前面加 const
关键词即可定义一个常引用,如以上代码,\(r\) 即是一个对 \(n\) 的常引用
常引用和非常引用的区别:我们无法通过常引用去修改其引用的内容!
关于常引用和非常引用的转换:const T&
与 T&
是两种不同的类型
可以通过 T&
与 T
类型 来初始化 const T&
类型
而 const T
与 const T&
类型则不能用来初始化 T&
类型的引用,除非进行 强制类型转化
标签:const,函数,int,Coursera,C++,引用,类型,程序设计,函数指针 来源: https://www.cnblogs.com/VeniVidiVici/p/16158952.html