C++补充笔记(二)

第二章

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;
}

测试结果如下:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值