C++指针,宏,以及一个文件所需的部分
宏定义
宏定义的语法
这里列一个简单的例子再来讲解它的含义。
具体的含义
宏定义,用在这里是告诉编译器一些事。比如说,我加入了一个文件里,#include 两个文件 L1.H ,L2.H但是,事实上,L1.H包含了L2.H,如果两个文件都载入,那就没有必要了。就是类似的,如果没有SU_LOG_H,就定义一个。宏相当于一个标记,编译器根据这个宏是否存在,作出一些你看不见的操作。当然,用途很多。你只需要记住,ifndef的意思就是,在编译的时候,如果没有定义XXX,就执行下面的操作。
添加了头文件之后就可以在cpp文件中进行调用(注意要在前面include)。
在cpp文件中,要注意要把这个文件中用到的所有h文件用include进行载入,具体可以用SI进行检查,
之后就是对类内的函数进行编写,调用其他的函数
指针
指针的声明
下面给出一个简单的指针的声明,这是在学习c语言中被我们所熟知的
long *pnumber;
这句代码声明了一个long型的指针,但是在c++中,更多的是以类为声明的指针。我们可以理解为声明了一个某类的指针。需要注意的是,在c++中有一个约定俗成的规矩,我们常在变量前加p代表它是一个指针
例如:
Tmultipagewidget *m-pTabpage;
这句代码即代表一个类型为Tmultipagewidget,名称为m-pTabpage的指针。
为什么使用指针是程序更好的选择?
主要原因是因为使用指针可以根据程序的实际输入动态的调整内存的用量,因为大部分时候我们并不提前能知道到底要创建多少变量。
指针的初始化
小知识:堆的概念
堆是指计算机中未使用的内存,也被称为空闲存储器。
初始化
new操作符可以为空闲存储器(也就是堆)分配空间,同时,当一个指针的生命周期结束之后,也需要用delet命令释放这个指针,防止一个空指针对我们的程序造成更大的危害。
下面是一个例子:
首先声明一个double类型的指针:
double * pvalue(null);
接着为它new出一个空间,并赋值为999.0.
pvalue= new double(999.0);
同样,上述两句也可以简化为一句:
double *pvalue(new double(999.0));
注意,每一个new必须带一个delet
用于释放指针占用的内存。当然比较正规的程序都会把delet封装到release()函数中,这个函数可以放在我之前的文章介绍的析构函数自动清除。
类对象的指针与引用
俗话说用好了指针才相当于用好了c语言,那么c++不仅要求用好指针,更需要用好类。
下面通过几个例子来介绍这部分的内容。
类对象的指针:
例如,构建一个指向cbox类的指针:
CBox *pBox(null);
pBox->volume(); //调用类下的函数(指针)
构造函数:
一个起名为Line的构造函数:
Line::Line(double len)
后面再加一个冒号可以用于初始化内部变量。
如果有哪里不对的地方,请各位批评指正,不断学习