一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 156 下一页
摘要: 与作用域有关的另一个概念是链接,当同时编译多个文件时,每个源文件被称为一个翻译单元,在某一个翻译单元里定义的东西在另一个翻译单元里使用正是链接发挥作用的地方。 存储类(storage class):每个变量都有一个存储类,它决定着程序将把变量的值储存在计算机的什么地方、如何存储、以及变量应该有怎样的 阅读全文
posted @ 2023-08-18 15:36 一杯清酒邀明月 阅读(26) 评论(0) 推荐(0) 编辑
摘要: 命名空间其实就是由用户定义的范围,同一个命名空间里的东西只要在这个命名空间里具有独一无二的名字就行了。 例如: 1 namespace author 2 3 { 4 5 std::string person; 6 7 } 8 9 namespace programmer 10 11 { 12 13 阅读全文
posted @ 2023-08-18 15:33 一杯清酒邀明月 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 利用C++预处理器,我们可以让头文件只在这个类还没有被声明过的情况下才声明它。作为一种固定模式,这里使用常量名通常与相应的文件名保持一致(换成大写),把句号替换为下划线。例如rational.h文件对应RATIONAL_H 1 Rational.h文件 2 3 //Ration.h 4 //Crea 阅读全文
posted @ 2023-08-18 15:31 一杯清酒邀明月 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 模块化:把程序划分成多个组成部分(即所谓的模块)。这是通过把程序代码分散到多个文件里,等编译程序时再把那些文件重新组合在一起实现的。 C++预处理器的#include指令提供了一种能够让编译器在编译主程序时把其他文件的内容包括进来的机制。例如用这个指令来包括iostream头文件。 实例:头文件应用 阅读全文
posted @ 2023-08-18 15:30 一杯清酒邀明月 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 如果程序会运行很长时间(例如在服务器上,注意不是所有的操作系统都像windows一样每天都要重启),并且在不停地申请新的内存块,忘记释放那些已经不再有用的老内存迟早会把内存消耗殆尽,直接导致后边的new操作无法执行甚至崩溃。 动态内存是没有作用域的,所以必须由程序员来跟踪它们的使用情况,并在不需要用 阅读全文
posted @ 2023-08-18 15:29 一杯清酒邀明月 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 实例1:静态强制转换 1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 class Company 6 { 7 public: 8 Company(string theName,string product); 阅读全文
posted @ 2023-08-18 15:29 一杯清酒邀明月 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 我们可以把一个对象赋值给一个类型与之相同的变量,编译器将生成必要的代码把“源”对象各属性的值分别赋值给“目标”对象的对应成员。这种赋值行为称之为逐位复制。(但如果某些成员变量是指针的话,对象成员逐位复制的结果是你将拥有两个一模一样的实例,而这两个副本里的同名指针会指向相同的地址) 实例1:带指针变量 阅读全文
posted @ 2023-08-18 15:27 一杯清酒邀明月 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 在函数里调用new语句为某种对象或某种基本数据类型分配一块内存,再把那块内存的地址返回给程序的主代码,主代码将使用那块内存并在完成有关操作后立刻释放。 实例1:函数或方法返回内存 1 #include <iostream> 2 using namespace std; 3 4 int *newInt 阅读全文
posted @ 2023-08-18 15:13 一杯清酒邀明月 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 虽然前面讲过的用new给基本类型和对象在运行时分配内存,但它们的尺寸在编译时就已经确定下来——因为我们为之申请内存的数据类型在程序中有明确的定义,有明确的单位长度。 但有些时候,必须等到程序运行时才能确定需要申请多少内存,甚至还需要根据程序的运行情况追加申请更多的内存。 例如: int *x = n 阅读全文
posted @ 2023-08-18 15:11 一杯清酒邀明月 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 到目前为止,所讲解的每个示例程序在完成它的任务时所使用的内存空间都是固定不变的。不能在程序运行期间动态增加或减少内存空间(即静态内存)。 在很多时候,需要存储的数据量到底有多大在事先往往是一个未知数,想要处理好这类情况,就需要在C++程序里使用动态内存。 动态内存由一些没有名字、只有地址的内存块构成 阅读全文
posted @ 2023-08-18 15:10 一杯清酒邀明月 阅读(31) 评论(0) 推荐(0) 编辑
摘要: C语言和C++都有一个专门为调试而准备的工具函数 assert函数。这个函数是在assert.h库文件里定义的。 实例1:assert函数应用 1 #include <cassert> 2 //assert()函数需要有一个参数,它将测试这个输入参数的真或者假状态 3 //如果为真 Do nothi 阅读全文
posted @ 2023-08-18 15:09 一杯清酒邀明月 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 让函数返回错误代码 实例:范围限制 1 #include <iostream> 2 #include <climits> 3 4 using namespace std; 5 class Factorial 6 { 7 public: 8 Factorial(unsigned short num); 阅读全文
posted @ 2023-08-18 15:07 一杯清酒邀明月 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 程序出错可以分为两大类:编译时出错(complie-time error)和运行时错误(run-time error) suggest1:培养并保持一种编程风格 suggest2:认真对待编译器给出的错误/警告信息 suggest3:写代码三思而后行(先画流程图) suggest4:注意检查最基本的 阅读全文
posted @ 2023-08-18 15:07 一杯清酒邀明月 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 通过虚继承某个基类,就是在告诉编译器:从当前这个类再派生出来的子类只能拥有那个基类的一个实例。 虚继承的语法: 1 class Teacher:virtual public Person 2 3 { 4 5 } 这样做的话便可以让Student和Teacher类都虚继承自Person类,编译器将确保 阅读全文
posted @ 2023-08-18 15:06 一杯清酒邀明月 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 1 多继承语法: 2 3 //助教类既继承于老师类,又继承于学生类 4 class Assistant:public Teacher,public Student 5 { 6 }; 7 8 当遇到的问题无法只用一个“是一个”关系来描述的时候,就是多继承出场的时候。例即是学生,又是人,还是助教。 9 阅读全文
posted @ 2023-08-18 15:06 一杯清酒邀明月 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 一般来说,在调用operator<<()重载函数时,传递给它的是哪一个流,它返回的就应该是那个流的一个引用。 实例:左移操作符重载 1 #include <iostream> 2 #include <string> 3 #include <math.h> 4 5 using namespace st 阅读全文
posted @ 2023-08-18 15:04 一杯清酒邀明月 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 去重载一个操作符,应该只有在必要的时候,比如实现一种新的数据类型时,才重载操作符。 重载操作符的目的是为了让代码更容易阅读和理解。 阅读全文
posted @ 2023-08-18 15:03 一杯清酒邀明月 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 所谓重载,就是重新赋予新的含义,函数重载是对一个已有的函数赋予新的含义。 运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该运算符。也就是说,运算符重载是通过定义函数实现的,运算符重载实质是是函数的重载。 实例1:复数加法 1 #include <iostrea 阅读全文
posted @ 2023-08-18 14:56 一杯清酒邀明月 阅读(29) 评论(0) 推荐(0) 编辑
摘要: 实例1:抽象方法应用 1 //int *pointer = new int;//声明一个整型指针,并在程序运行时将它指向分配的内存空间 2 //delect *pointer;//删除指针,释放内存 3 #include <iostream> 4 #include <string> 5 6 usin 阅读全文
posted @ 2023-08-18 14:55 一杯清酒邀明月 阅读(66) 评论(0) 推荐(0) 编辑
摘要: TIPS: 引发问题的源头是我们使用了new在程序运行的时候才为dog和cat分配Dog类型和Cat类型的指针。这些都是它们在运行时才分配的类型,和它们在编译时的类型是不一样的。 如果拿不准要不要把某种方法声明为虚方法,那么就把它声明为虚方法好了。 在基类里把所有的方法都声明为虚方法会让最终的可执行 阅读全文
posted @ 2023-08-18 14:54 一杯清酒邀明月 阅读(34) 评论(0) 推荐(0) 编辑
上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 156 下一页