第二章
2.1命名空间
命名空间的定义,与类的定义不同,命名空间的定义是不用以分号结尾的。
比如说
namespace one{
int a = 200;
int b = 10;
}
在其他地方,只要通过
one::a
one::b
就可以使用命名空间中的内容
2.2内联函数
C语言中,对于一些功能简单的函数,有时通过宏定义来代替,以减少程序执行过程中函数调用及返回所需要的时间开销。
C++中通过内联函数取代了C语言中的宏定义(#define),增强了安全性。
在OOP中,定义在类中的成员函数都将自动理解为内联函数,无需手动添加inline关键字。
2.3动态申请空间
再次整理一下:
int *ptr;
ptr = new int; //申请一个int大小的空间
ptr = new int[10]; //申请十个int大小的空间
ptr = new int(10); //申请一个int大小的空间并初始化为10
ptr = new int[10](); //申请十个int大小的空间并全部初始化为0
2.4void指针
void作为指针的类型时,表示不确定的类型,即任何类型的指针均可直接赋值给void类型的指针。
需要注意的是当需要通过已获得值的void指针处理该指针指向内存中的内容时,必须进行显式类型转换,否则会报错。
下面给出一个实例:
#include <iostream>
using namespace std;
int main(){
void *ptr;
string s = "hello";
double a = -3.2245;
ptr = &s; //可以直接赋值
cout << *(string*)ptr << endl; //此时必须类型转换为string*
ptr = &a; //可以直接赋值
cout << *(double*)ptr << endl; //此时必须类型转换double*
return 0;
}
测试结果如下: