第9章 内存模型和命名空间

文章探讨了C++编程中的关键概念,包括头文件的组织,如函数原型、#define和const定义的符号常量,以及结构和类声明。提到了静态存储的链接性,如外部、内部和无链接性。此外,讨论了get()函数的行为,尤其是与空行处理相关的问题。文章还深入讲解了const常量在头文件中的作用域和定位new运算符的内存管理,以及new运算符的重载。最后,通过示例展示了using声明在命名空间中的应用和规则。
摘要由CSDN通过智能技术生成

1. 头文件

1. 函数原型

2. 使用#define和const定义的符号常量

3. 结构声明

4. 类声明

5. 模板声明

6. 内联函数

2. 静态存储的链接性

外部、内部、无

3. get()读取空行为false

get(char*,int) 读取空行导致cin为false

4. const 常量放在头文件

const声明的常量为内部链接性;每个引用该头文件的文件内都会有一个 const常量

5. 定位new运算符

//从buffer1内分配出内存空间,但是不能手动释放
//因为此时的buffer1并不在delete的管辖范围内
char buffer1[500];
int* p1 = new(buffer1) int [20];

//此时的buffer2的内存可以释放
char* buffer2 = new char[50];
char* p2 = new (buffer2) char[20];
delete p2;//但这样操作不被允许。
//原因:delete和常规new运算符搭配使用,但是不能和定位new运算符搭配。

 6. new运算符可以发生重载

5 中的内容说明了new运算符发生了重载

7. using 声明和using 编译

namespace jill{

    int ftech;
    double test(){
        cout<<"test:"<<endl;
    }
}
char fetch;
int main(){
    using fill::fetch;
    double fetch;//不允许
    cout<<fetch;
}
namespace jill{
    int ftech;
    double test(){
        cout<<"test:"<<endl;
    }
}
char fetch;
int main(){
    using fill;
    double fetch;//允许
    cout<<fetch<<endl;//局部的fetch
    cout<<fill::fetch<<endl;
    cout<<::fetch<<endl;//全局的fetch
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋进在AI路上的小李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值