学了C再学C++(2)内存模型和名称空间。

/*
 内存模型。。。。。。。

 C++的变量在内存中存储方式与C一样,都是auto,register,static这些。
	多出来的存储有关符号:
 mutable 即使结构为const ,其成员也能被修改,(感觉没用,指针一指,一样改。)
	C++的全局的const 默认加了static,所以不加static也能在其他文件使用同名变量,
 所以你想在其他文件用那个变量,必须在那个文件加个 extern const。
	语言链接性;
	由于C++一个函数名可以对应多个函数,C翻译名字是 fun() -> _fun(),而C++可能给你变成 fun() -> _fun_i();
 所以extern void fun();如果是C就应该写extern “C”void fun()。
	new用法可以像malloc那样用,int *p=new(20*sizeof(int));也可以int* p= new int[20]; 
	定位new :可以在未分配的数组里面给new分配空间。但是不能delete ; new(buff) typesize

名称空间。。。。。。。
	C++中可以创建一个声明的区域,其他程序使用这个名称空间的程序,如std名称空间。
	意思就是好几个人搞得都有一个xxfun(),你就要选个人的xxfun(),名称空间就可以让你选。
	名称空间的链接性为外部除非它引用了常量。还有一个文件级的名称空间叫全局名称空间。
	想在名称空间里面加东西就
	namespace XXXXXX{
	int xx;
	char * xxfun();
	}
	访问用 XXXXXX::xxfun();
	用useing可以让这个XXXXXX::省略
	using XXXXXX::xxfun;
	using namespace XXXXXX;
	可以写在函数里和函数外面,以后你的xxfun和xx就是XXXXXX里的了。

	名称空间可以嵌套其他名称空间。

	其他内容推荐看C++primer plus 6版334页。
	using首选局部而不是用在全局。
*/
#include <iostream>
#include <fstream>
#include<string.h>
#include "study.h"

#ifdef DAY3

namespace laplace
{
	void strncpy(char* des, const char* src, int n)
	{
		while (n--)
		{
			des[n] = src[n];
		}
	}
}
struct chaff
{
	char dross[20];
	int slag;
};

void new_use()
{
	using namespace std;
	using laplace::strncpy;
	chaff* c1 = new chaff;

	strncpy(c1->dross,"new useing",20);
	c1->slag = 114514;
	cout << c1->dross << endl;
	cout << c1->slag << endl;
	delete c1;
}

int main()
{
	new_use();
	return 0;
}

#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值