当前位置: 首页 > news >正文

网盘做网站cdn中国设计网

网盘做网站,cdn中国设计网,胃肠科医院网站建设,企业免费网站建设模板目录 1、关键字new#xff1a; 1、用法#xff1a; 2、理解#xff1a; 3、与malloc的相同与不同#xff1a; 1、相同#xff1a; 2、不同#xff1a; 2、模版初阶#xff1a; 1、函数模版#xff1a; 1、概念#xff1a; 2、关键字#xff1a;template 1、用法 2、理解 3、与malloc的相同与不同 1、相同 2、不同 2、模版初阶 1、函数模版 1、概念 2、关键字template 3、模版原理 4、函数模版的实例化 1、隐式实例化 2、显式实例化 2、类模版 1、定义格式 2、类模版的实例化 1、关键字new new是相对于C语言的malloc一个新的内存管理方式通过new和delete配套使用来进行动态内存管理。 1、用法 类型*  名字 new 类型; 例如 int* ptr1 new int 这就是动态申请了一个int类型空间。 2、理解 1、new() 这样在里面可以进行初始化例如 int* ptr2  new int(10); 这就是动态申请一个int类型的空间并初始化为10 2、new[n] 这样就是分配这种类型的n个大小的内存空间,并用默认构造函数来初始化这些变量; 例如 int* ptr6 new int[10]; 这样就是动态申请10个int类型的空间。 3、与malloc的相同与不同 1、相同 都是从对上申请的空间并且都需要手动释放。 2、不同 其余的还有 1、malloc和free是函数new和delete是操作符 2、malloc申请的空间不会初始化new可以初始化调用构造函数 3、malloc申请空间时需要手动计算空间大小并传递new只需在其后跟上空间的类型即可 如果是多个对象[]中指定对象个数即可 4、malloc的返回值为void*, 在使用时必须强转new不需要因为new后跟的是空间的类型 5、malloc申请空间失败时返回的是NULL因此使用时必须判空new不需要但是new需要捕获异常 6、new/delete和malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数初始化和析构函数清理但是二者对于内置类型几乎是一样的。 class A { public:A(int a 0): _a(a){cout A() endl;}~A(){cout ~A() endl;} private:int _a; }; int main() {A* p1 (A*)malloc(sizeof(A));A* p2 new A(1);free(p1);delete p2;return 0; } 调用构造函数就可以对自定义类型进行初始化了比如在链表那里可以不用newnode了 2、模版初阶 引入 在C语言中交换函数Swap存在“写死”但是一会儿要交换int类型一会儿要交换double类型那么就要我们写很多不同种类的函数就很繁琐在C中就引入了模版的概念这样可以大大减少代码的重复度。 1、函数模版 1、概念 函数模板代表了一个函数家族比如Swap函数可交换int double 等等该函数模板与类型无关在使用时被参数化根据实参类型产生函数的特定类型版本。 2、关键字template 模版格式 templatetypename T1,typename T2,......,typename Tn void 函数名(T 形参名1,......,T 形参名n)//注意权限情况加const 以下是示例代码 templatetypename T void Swap(T x, T y) {T tmp x;x y;y tmp; } int main() {int a 1;int b 2;Swap(a, b);cout a a endl b b endl;return 0; } 3、模版原理 虽然我们只写了一个模版函数但是实际上调用是因为编译器帮我们通过函数模版实现了不同的函数再调用它们来达到不同类型函数的调用。 4、函数模版的实例化 函数模板的实例化用不同类型的参数使用函数模板。 1、隐式实例化 让编译器根据实参推演模板参数的实际类型叫做隐式实例化。 2、显式实例化 在函数名后的中指定模板参数的实际类型。 templatetypename T T Add(const T x,const T y) {return x y; }int main() {int a 10;double b 20.10;cout Add(a, b) endl;return 0; } 上述代码中有个问题就是a和b是不同类型的但是在函数中又必须是同一种类型的这样的话就可以用显式实例化或者在Addab中进行转换。 1、在Addab中转化就是转化为Add(double)a,b或者Add(a,(int)b) 2、更好的一种方法就是用显式实例化 改为Addint(a,b)或者Adddouble(a,b) 但是实际上不会这么用在后面list等等数据结构中会用到。 2、类模版 1、定义格式 templateclass T1, class T2, ..., class Tn class 类模板名 {  // 类内成员定义 }; 2、类模版的实例化 类模板实例化与函数模板实例化不同类模板实例化需要在类模板名字后跟然后将实例化的类型放在中即可类模板的名字不是真正的类就是个名字而实例化的结果才是真正的类。 比如我写了一个栈模版 templateclass T class Stack { public:Stack(size_t capacity 3);void Push(const T data);// 其他方法...~Stack(){if (_array){free(_array);_array NULL;_capacity 0;_size 0;}}private:T* _array;int _capacity;int _size; }; 那么栈的类名Stack 栈的类型StackT 这里是将声明与定义分离了在函数外面进行定义就需要加上模版的声明和类域的划分 templateclass T StackT::Stack(size_t capacity) {_array new T[capacity];_capacity capacity;_size 0; }templateclass T void StackT::Push(const T data) {_array[_size] data;_size; }
http://www.dnsts.com.cn/news/198312.html

相关文章:

  • 佛山网站建设公司怎么样怎么做网站软件
  • 电脑做系统网站o2o网站设计方案
  • 做网站怎样备案推荐做网站的公司
  • 石家庄的网站公司杭州企业网站seo
  • 十大中文网站排名wordpress space
  • python 做网站优势合肥房产网站建设
  • 版式网站有哪些汕头seo排名
  • 浙江嘉兴网站建设网页版qq登录wordpress
  • 编程和做网站那个号广州哪家做网站
  • 网站建设入账时进那个会计科目建筑设计网上课程
  • 重庆网上房地产网站2019年度最火关键词
  • 自己做网站实时监控学校网站建设新闻
  • 网站建设选哪个好小网站备案
  • 什么网站做教育的比较多电子商务平台中搜索词拆解包括
  • 企业平台网站制作阿里首个网站开发人员
  • 网站多页面布局网站收录很慢
  • 站长工具百科火币网站怎么做空
  • 西部数码怎么上传网站wordpress视频不全屏播放
  • 服务器安装网站做一手房产中介用什么网站好
  • 下拉框代码自做生成网站视频网站开发工具
  • 投资建设项目管理师报名网站个人简历自我介绍简短
  • 网站制作排名优化网站制作公司司
  • 广州手机网站建设报价表网站主页建设格式
  • 平凉市建设厅官方网站资讯门户网站 dede
  • 如何做旅游攻略网站thinkphp只能做网站
  • 怎样做网站赚流量福建省建设系统网站
  • 一个人可以做几个网站微信小程序源代码模板
  • 怎么用自己主机做网站_建设部四库一平台查询
  • 有没有做网站的电话湖南人文科技学院王牌专业
  • 如何做ptp刷流量的网站网站建设最简单的教程