随笔分类 -  C/C++

摘要:类可以允许其他类或者函数访问它的非公有成员,方法是令其他类或者函数成为它的友元。 如果类想把一个函数作为它的友元,只需要增加一条以friend关键字开始的函数声明语句即可: 需要注意的是,友元的声明仅仅指定了访问的权限看,而非一个通常意义上的函数声明。如果我们希望类的用户能够调用某个友元函数,那么我 阅读全文
posted @ 2018-11-19 15:14 Lightfall 阅读(104) 评论(0) 推荐(0)
摘要:class和struct定义类唯一的区别就是默认的访问权限。 如果我们使用struct关键字,则定义在第一个访问说明符之前的成员是public的;相反,如果我们使用class关键字,组这些成员是private的。 阅读全文
posted @ 2018-11-19 15:05 Lightfall 阅读(103) 评论(0) 推荐(0)
摘要:定义一个普通的类时,一定要定义它自己的构造函数。原因有三:第一个原因是编译器只有在发现类不包含任何构造函数的情况下才会替我们生成一个默认的构造函数,一旦我们定义了一些其他的构造函数,那么除非我们再定义一个默认的构造函数,否则类将没有默认构造函数。第二个原因是对于某些类来说,合成的默认构造函数可能执行 阅读全文
posted @ 2018-11-18 23:20 Lightfall 阅读(3333) 评论(0) 推荐(0)
摘要:在C++中,我们可以在函数前加上inline字样从而使它在每个调用节点上“内联”地展开。 举个例子: 上述的 cout << Sum(1, 2) << endl; 在编译过程中会展开成 cout << 1+2 << endl; 从而避免了调用函数的一系列工作,优化了运行速度。 一般来说,内联机制用于 阅读全文
posted @ 2018-11-15 00:20 Lightfall 阅读(104) 评论(0) 推荐(0)
摘要:某些函数有这样一种形参,在函数的很多次调用中它们都被赋予一个相同的值,此时,我们把这个反复出现的值称为函数的默认实参。调用含有默认实参的函数时,可以包含该实参,也可以省略该实参。 例如定义一个函数screen表示窗口的内容: 我们可以为一个或多个形参定义默认值,但是需要注意:一旦某个形参被赋予了默认 阅读全文
posted @ 2018-11-13 16:16 Lightfall 阅读(457) 评论(0) 推荐(0)
摘要:int *num[10] 定义了一个指针数组,代表一个含有10个 int型指针的数组; int (*num)[10] 定义了一个指针数组,代表num是一个指针,指向含有10个int型整数的数组; 如上形式, int (*fun(int i))[10]; 声明了一个返回值为数组指针的函数; 阅读全文
posted @ 2018-11-02 00:37 Lightfall 阅读(91) 评论(0) 推荐(0)
摘要:initializer_list是一种模板类型,定义initializer_list对象是,必须说明列表中所含元素的类型: initializer_list<Type> lst{a, b, c...}; 后面的大括号可以省略,不赋初始值。 和vector一样,可以用于函数形参中,和vector不同的 阅读全文
posted @ 2018-10-31 23:57 Lightfall 阅读(124) 评论(0) 推荐(0)
摘要:有时我们需要给main函数传递实参, 我们可以把命令行选项通过两个形参传递给main函数: int mian(int argc, char *argv[]) { ... }; argv是argument value,是一个数组,它的元素是指向C风格字符串的指针;第一个形参argc是argument 阅读全文
posted @ 2018-10-31 23:37 Lightfall 阅读(194) 评论(0) 推荐(0)
摘要:在C++中,异常处理包括: · throw表达式(throw expression) 异常检测部分使用throw表达式来表示它遇到了无法处理的问题。throw表达式抛出一个异常并把控制权转移到能处理该异常的最近的catch子句。 · try语句块(try block) 异常处理部分使用try语句块处 阅读全文
posted @ 2018-10-27 00:44 Lightfall 阅读(2332) 评论(0) 推荐(0)
摘要:在C++11新标准中新增了范围for语句,所以遍历多维数组可以用如下形式: 严格来说,C++语言中没有多维数组,通常所说的多维数组其实是数组的数组。 比如说 int ia[3][4]; 实际上是定义一个大小为3的数组,数组中的每个元素是一个大小为4的数组。 int ib[10][20][30]; 实 阅读全文
posted @ 2018-10-26 18:38 Lightfall 阅读(566) 评论(0) 推荐(0)
摘要:using声明(using declaration) using namespacename::namespacemember; using声明一次只引入命名空间的一个成员。从效果上看就好像using声明语句为命名空间的成员在当前作用于内创建了一个别名一样。 using指示(using direct 阅读全文
posted @ 2018-10-12 01:33 Lightfall 阅读(711) 评论(0) 推荐(0)
摘要:1.使用getchar()输入字符时,是先将所有字符送入缓冲区,知道键入回车换行后才从缓冲区逐个读出并赋值给变量ch 2.fread和fwrite是按数据块的长度来处理输入/输出的,在用文本编辑器打开文本文件时可能因发生字符转换而出现莫名其妙的结果,所以这两个函数通常用于二进制文件的输入/输出。 阅读全文
posted @ 2018-09-24 00:40 Lightfall 阅读(114) 评论(0) 推荐(0)