摘要: 基类也叫父类,派生类也叫子类。 类之间的继承关系继承关系是类之间的父子关系。 继承关系的特点如下:A、 子类拥有父类的所有属性和行为B、 子类也是一种特殊的父类C、 子类对象可以当父类对象使用D、 子类中可以添加父类没有的属性和方法E、 子类对象可以直接初始化父类对象F、 子类对象可以直接赋值给父类 阅读全文
posted @ 2017-03-05 13:22 Crystal_Guang 阅读(1497) 评论(1) 推荐(0) 编辑
摘要: 一个进程默认打开三个文件描述符: STDIN_FILENO 0STDOUT_FILENO 1STDERR_FILENO 2 man 2 open可查看详情; open函数可以打开或者创建一个文件: #include <sys/types.h>#include <sys/stat.h>#include 阅读全文
posted @ 2017-03-04 10:56 Crystal_Guang 阅读(1474) 评论(0) 推荐(0) 编辑
摘要: 在Windows下我们习惯的操作,复制单个字符,复制单行多行,删除单行多行,在linux的vim中操作如下: G(shift+g+g):跳到文档尾 g+g:跳转到文档首 home键:光标移动到行首 end键:光标移动到行尾 yy:复制光标所在行的整行内容 yw:复制光标所在单词的内容 nyy:复制从 阅读全文
posted @ 2017-03-03 17:07 Crystal_Guang 阅读(981) 评论(0) 推荐(0) 编辑
摘要: 派生类必须通过使用类派生列表, 明确指出它是从哪个(哪些)基类继承而来的。类派生列表的形式是:首先是一个冒号,后面紧跟以逗号分隔的基类列表(可以多继承,但一般不使用多继承),其中每个基类前面可以有以下三种访问说明符中的一个:public,private,protectedd。 c++语言中,基类必须 阅读全文
posted @ 2017-03-03 11:18 Crystal_Guang 阅读(2642) 评论(0) 推荐(1) 编辑
摘要: 在重载输出输入运算符的时候,只能采用全局函数的方式(因为我们不能在ostream和istream类中编写成员函数),这里才是友元函数真正的应用场景。对于输出运算符,主要负责打印对象的内容而非控制格式,输出运算符不应该打印换行符;对于输入运算符,必须处理可能失败的情况(通常处理输入失败为默认构造函数的 阅读全文
posted @ 2017-03-02 11:12 Crystal_Guang 阅读(38410) 评论(0) 推荐(3) 编辑
摘要: c++语言并不要求递增和递减运算符必须是类的成员,但是因为它们改变的正好是所操作对象的状态,所以建议将其设定为成员函数。(但下面的代码为了练习,还是分别采用成员函数和全局函数的方式实现) 业余实现代码: NOTE: 后置版本接受一个额外的参数(不被使用)int类型的参数(必须是int类型的)。当我们 阅读全文
posted @ 2017-03-01 22:21 Crystal_Guang 阅读(9842) 评论(3) 推荐(0) 编辑
摘要: C语言中,前置和后置++,--都不能作为左值,而在c++中,前置的++和--可以作为左值,从下面的重载运算符中也可以看出,它们返回的是引用,我不知道为什么这里和c语言中不同,但c++类似的提升还有三目运算符?:,在c中也不可以做左值,但c++中可以。或者是因为c++提出了引用,进而对c做了一定的提升 阅读全文
posted @ 2017-03-01 15:29 Crystal_Guang 阅读(1854) 评论(0) 推荐(0) 编辑
摘要: 根据不同重载方式有不同的调用方式。全局函数重载运算符,成员函数或者友元函数重载运算符。 重载运算符是具有特殊名字的函数,它由关键字operator和其后要定义的运算符共同组成。和其他函数一样,重载的运算符也包含返回类型、参数列表以及函数体。 重载运算符的参数数量应该与运算符作用的对象数量一样多,一元 阅读全文
posted @ 2017-02-27 13:38 Crystal_Guang 阅读(288) 评论(0) 推荐(0) 编辑
摘要: nm用于列出程序文件中的符号。建立nmtest.c文件: nm的第一列是指程序运行时符号在内存中的地址,它表示函数或变量的开始地址;第二列是指相应的符号放在哪个段,最后一列则是符号的名称。 第二列的信息对我们非常有用,可以让我了解在程序中所定义的一个符号是被放在程序的哪一个段的。下面列出常见字母含义 阅读全文
posted @ 2017-02-26 11:27 Crystal_Guang 阅读(609) 评论(0) 推荐(0) 编辑
摘要: 类可以允许其他类或者函数访问它的私有成员,方法是令其他类或者函数成为它的友元。如果类想把一个函数或者类声明成它的友元,只需要增加一条以friend关键字开始的声明语句即可。 友元声明只能出现在类定义的内部,但是在类内出现的具体位置不限。友元不是类的成员也不受它所在区域访问控制级别的约束,一般来说,最 阅读全文
posted @ 2017-02-26 09:57 Crystal_Guang 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 1.如果要将多个.o文件生成一个库文件,则存在两种类型的库,一种是静态库,在linux里面后缀是.a,另一种是动态库,后缀为.so。 当可执行程序要与静态库进行链接时,所用到的库中的函数和数据会被拷贝到最终的可执行程序中。而采用动态库则不会,程序加载器在后台为我们讲所需的动态库自动加载到内存中且保证 阅读全文
posted @ 2017-02-25 16:22 Crystal_Guang 阅读(987) 评论(0) 推荐(0) 编辑
摘要: 如果这个类需要一个析构函数,我们几乎可以肯定它也需要一个拷贝构造函数和一个拷贝赋值运算符。 如果一个类需要拷贝构造函数,几乎可以肯定它也需要一个拷贝赋值运算符,反之亦然。 然而,无论是需要拷贝构造函数还是需要拷贝赋值运算符都不必然意味着也同时需要析构函数。 阅读全文
posted @ 2017-02-24 19:47 Crystal_Guang 阅读(824) 评论(0) 推荐(0) 编辑
摘要: addr2line用于得到程序指令地址所对应的函数,以及函数所在的源文件名和行号。 在不少嵌入式开发环境中,编译器的名称往往不是gcc,而是想arm-rtems-gcc这样的,对于这种命名形式的编译器,读者通常可以找到arm-rtems-addr2line ,arm-rtems-objdump等相应 阅读全文
posted @ 2017-02-23 20:28 Crystal_Guang 阅读(15645) 评论(2) 推荐(1) 编辑
摘要: summary: 非静态成员函数有this指针,这样的成员函数实现参数会比全局函数少一个,反之全局函数参数会比非静态成员函数多一个。c++中多使用引用更好。 阅读全文
posted @ 2017-02-20 12:11 Crystal_Guang 阅读(2109) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #include 3 using namespace std; 4 class Copy_construction { 5 public: 6 Copy_construction(int a,int b,int c) 7 { 8 this->a = a; 9 this->b = b; 10 ... 阅读全文
posted @ 2017-02-19 10:02 Crystal_Guang 阅读(1605) 评论(0) 推荐(0) 编辑