C++ Primer Plus学习:第九章 内存模型和名称空间(2)
来源:互联网 发布:焊接机器人的软件功能 编辑:程序博客网 时间:2024/05/16 05:34
new
new操作符
布局new操作符
命名空间
声明区域
潜在作用域
using namespace XXX;
namesp.cpp
namessp.cpp
new操作符
布局new操作符
eg
#include <iostream>#include <new>using namespace std;const int BUF = 512;const int N = 5;char buffer[BUF];int main(){ double *pd1,*pd2; int i; cout<<"Calling new and placement new:\n"; pd1 = new double[N]; pd2 = new (buffer) double[N]; for(i = 0;i<N;i++) pd2[i] = pd1[i] = 1000+20.0*i; cout<<"Buffer addresses:\n"<<" heap: "<<pd1<<" static: "<<(void *)buffer<<endl; cout<<"Buffer contents:\n"; for(i = 0;i<N;i++) { cout<<pd1[i]<<" at "<<&pd1[i]<<"; "; cout<<pd2[i]<<" at "<<&pd2[i]<<endl; } cout<<"\nCalling new and placement new a second time:\n"; double *pd3,*pd4; pd3 = new double[N]; pd4 = new (buffer) double[N]; for(i = 0;i<N;i++) pd4[i] = pd3[i] = 1000+20.0*i; cout<<"Buffer contents:\n"; for(i = 0;i<N;i++) { cout<<pd3[i]<<" at "<<&pd3[i]<<"; "; cout<<pd4[i]<<" at "<<&pd4[i]<<endl; } cout<<"\nCalling new and placement new a third time:\n"; delete []pd1; pd1 = new double[N]; pd2 = new(buffer+N*sizeof(double)) double[N]; for(i = 0;i<N;i++) pd2[i] = pd1[i] = 1000+20.0*i; cout<<"Buffer contents:\n"; for(i = 0;i<N;i++) { cout<<pd1[i]<<" at "<<&pd1[i]<<"; "; cout<<pd2[i]<<" at "<<&pd2[i]<<endl; } delete []pd1; delete []pd3; system("pause"); return 0; }
Calling new and placement new:Buffer addresses: heap: 0xb31810 static: 0x443010Buffer contents:1000 at 0xb31810; 1000 at 0x4430101020 at 0xb31818; 1020 at 0x4430181040 at 0xb31820; 1040 at 0x4430201060 at 0xb31828; 1060 at 0x4430281080 at 0xb31830; 1080 at 0x443030Calling new and placement new a second time:Buffer contents:1000 at 0xb31840; 1000 at 0x4430101020 at 0xb31848; 1020 at 0x4430181040 at 0xb31850; 1040 at 0x4430201060 at 0xb31858; 1060 at 0x4430281080 at 0xb31860; 1080 at 0x443030Calling new and placement new a third time:Buffer contents:1000 at 0xb31810; 1000 at 0x4430381020 at 0xb31818; 1020 at 0x4430401040 at 0xb31820; 1040 at 0x4430481060 at 0xb31828; 1060 at 0x4430501080 at 0xb31830; 1080 at 0x443058
命名空间
声明区域
潜在作用域
using namespace XXX;
eg
namesp.h
#include <iostream>namespace pers{ const int LEN = 40; struct Person { char fname[LEN]; char lname[LEN]; }; void getPerson(Person &); void showPerson(const Person &); }namespace debts{ using namespace pers; struct Debt { Person name; double amount; }; void getDebt(Debt &); void showDebt(const Debt &); double sumDebts(const Debt ar[],int n); }
namesp.cpp
#include <iostream>#include "namesp.h"namespace pers{ using std::cout; using std::cin; void getPerson(Person & rp) { cout<<"Enter first name:"; cin>>rp.fname; cout<<"Enter last name:"; cin>>rp.lname; } void showPerson(const Person & rp) { std::cout<<rp.lname<<","<<rp.fname; } } namespace debts{ void getDebt(Debt & rd) { getPerson(rd.name); std::cout<<"Enter debt:"; std::cin>>rd.amount; } void showDebt(const Debt & rd) { showPerson(rd.name); std::cout<<":{1}quot;<<rd.amount<<std::endl; } double sumDebts(const Debt ar[],int n) { double total = 0; for(int i = 0;i<n;i++) { total+=ar[i].amount; } return total; } }
namessp.cpp
#include <iostream>#include "namesp.h"void other(void);void another(void);int main(){ using debts::Debt; using debts::showDebt; Debt golf = {{"Benny","Goatsniff"},120.0}; showDebt(golf); other(); another(); system("pause"); return 0; } void other(void){ using std::cout; using std::endl; using namespace debts; Person dg = {"Doodles","Glister"}; showPerson(dg); cout<<endl; Debt zippy[3]; int i; for(i = 0;i<3;i++) { getDebt(zippy[i]); } for(i = 0;i<3;i++) { showDebt(zippy[i]); } cout<<"Total debt:{1}quot;<<sumDebts(zippy,3)<<endl; return ; } void another(void){ using pers::Person; Person collector = {"Milo","Rightshift"}; pers::showPerson(collector); std::cout<<std::endl; }
- C++ Primer Plus学习:第九章 内存模型和名称空间(2)
- C++ Primer Plus学习:第九章 内存模型和名称空间(1)
- C++ Primer plus 学习笔记之第九章内存模型和名称空间(1)
- 【C++ Primer plus】【第九章】内存模型和名称空间
- c++primer plus 第九章-名称空间
- 【c++ primer】第九章 内存模型和名称空间
- C++Primer内存模型和名称空间
- 【学习笔记】C++primer plus 9.内存模型与名称空间
- 第九章 内存模型和名称空间
- 第九章 内存模型和名称空间
- 第九章 内存模型和名称空间
- 第九章:内存模型和名称空间
- C++PrimerPlus第九章学习笔记——内存模型和名称空间
- C++ primer plus 第9章 内存模型和名称空间
- C++ Primer Plus 第9章 内存模型和名称空间
- 【读书笔记:C++ primer plus 第六版 中文版】第9章 内存模型和名称空间
- c++ primer plus 第9章 内存模型和名称空间
- 《C++ Primer Plus(第六版)》(13)(第九章 内存模型和命名空间 笔记)
- 5.4上安装Oracle 10g时提示如下错误:
- [Qt]动态库--window
- Pku 2749 Building roads
- 【转】Computer Science Journal Rankings
- Android系统开发常用的命令
- C++ Primer Plus学习:第九章 内存模型和名称空间(2)
- 【转贴】计算机核心期刊排名
- Ajax无刷新添加评论(JQuery版)
- Effective c++学习笔记——条款6,不想自动生成函数,要明确拒绝
- 为个小善——发布 Python 库 absolute32
- DOS 常用命令
- 利用Ajax实现动态级联
- double型数据的整数次方
- Java的反射(reflect)机制的学习