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

织梦购物网站整站源码网站建设的实验心得

织梦购物网站整站源码,网站建设的实验心得,网站开发工程师怎么样,成都网站建设优惠活动1#xff1a;实现一个字符串类。 简单汇总 最简单的方案#xff0c;使用一个字符串指针#xff0c;以及实际字符串长度即可。 参考stl的实现#xff0c;为了提升string的性能#xff0c;实际上单纯的字符串指针和实际长度是不够了#xff0c;如上#xff0c;有优化方案…1实现一个字符串类。 简单汇总 最简单的方案使用一个字符串指针以及实际字符串长度即可。 参考stl的实现为了提升string的性能实际上单纯的字符串指针和实际长度是不够了如上有优化方案除此之外考虑reserve() 以及重置容量迭代器的相关实现逻辑 (小字符串的存储优化结合占用内存大小4的倍数分配适当的缓冲区更好)。 类中如果没有成员变量类的大小为1如果有成员变量类的大小即为成员变量的大小。以前研究过 sizeof(string)的长度 可能是28 或者32 2实现注意细节 1c字符串指针 实际字符串的长度进行数据存储 2内存的申请和释放 用new/delete 或者malloc/free都可以吧 字符串的赋值借用strcpy 或者memcpy都可以吧。 3默认构造函数 c字符串传参构造 拷贝构造深拷贝 移动构造浅拷贝 std::move 赋值复制构造 赋值移动构造右参std::move) 4注意整个过程中 const参数的修饰以及相关函数返回值 返回引用对象和返回对象。 5重载必要的运算符 输入输出的重载 ,注意重载和时和friend关键字配合以及实现细节。 6c字符串相关函数strcpy strcmp strlen strcat strchr 3源码测试 3.1 类的声明思考constnoexcept修饰复制传参引用传参以及返回值返回引用 返回对象 /************************************* 1:不需要考虑太多直接字符串指针和长度进行实现。 2:考虑该类的大小如果字符串为null时如果字符串有长度时。 (字符串拼接 截断等) 3:字符串性能的优化短字符串直接存栈中长的进行申请。 其他考虑迭代器等的实现方案。只考虑指针和长度进行实现1:默认构造函数。2:C字符串初始化直接初始化移动构造。 拷贝构造函数赋值构造函数。3:重载运算符 **************************************/ #include iostream #include cstring#include stdio.h class my_string { private:char* data;size_t length;public://默认构造函数 c字符串构造 拷贝构造函数 移动构造函数 赋值构造函数 my_string();my_string(const char* str);my_string(const my_string other);my_string(my_string other) noexcept;~my_string();size_t size() const;const char* c_str() const;// my_string operator (const my_string other) noexcept; //赋值构造函数 复制my_string operator (my_string other) noexcept; //移动赋值构造函数bool operator(const my_string other) const;my_string operator (const my_string other) const; //注意friend的定义friend std::ostream operator(std::ostream os, const my_string str);friend std::istream operator(std::istream in, my_string str); //输入需要可修改 };3.2 类的定义 //函数前面用const 表示的是函数返回值const //函数后面用用const修饰 可以使常量调用表示该函数内部不可以修改成员变量 my_string::my_string() :data(nullptr), length(0) {printf(my_string() \n);data new char[1];data[0] \0; }//c字符串对string进行初始化 c字符串为NULL 不为NULL //以及c字符串本身也是一以\0终止 my_string::my_string(const char* str) {printf( my_string(const char * str) %s \n, str);if (str){length strlen(str); //str为NULL 会导致抛异常 data new char[length 1];strcpy(data, str);}else{data new char[1];data[0] \0;length 0;} }//字符串之间 拷贝构造函数 使用传递引用的方式提升性能 //在自己类的成员函数中 参数可以直接访问私有成员 my_string::my_string(const my_string other) {printf( my_string(const my_string str) %s \n, other.data);length other.length;data new char[length 1];strcpy(data, other.data); }//移动构造函数 注意 浅拷贝 my_string::my_string(my_string other) noexcept {printf( my_string(my_string str) %s \n, other.data);//不用申请内存 直接进行赋值即可data other.data;length other.length;other.data nullptr;other.length 0; }my_string::~my_string() {printf(~my_string() %s \n, data);if(data)delete[]data; }size_t my_string::size() const {return length; }const char* my_string::c_str() const {return data; }// //深拷贝 注意对象可能同一个 返回对象的引用 my_string my_string::operator (const my_string other) noexcept//赋值构造函数 复制 {printf(operator (const my_string other) %s \n, other.data);if (this other){return *this;}//赋值 先清理 再赋值delete[]data;length other.length;data new char[length 1];strcpy(data, other.data);return *this; }//浅拷贝 注意对象可能一个 返回引用 my_string my_string::operator (my_string other) noexcept //移动赋值构造函数 {printf(operator (my_string other) %s \n, other.data);if (this other){return *this;}data other.data;length other.length;other.data nullptr;other.length 0;return *this; //返回对象的引用 }//判断两个字符串相等 bool my_string::operator(const my_string other) const {printf(operator(const my_string other) %s \n, other.data);return strcmp(data, other.data) 0; }my_string my_string::operator (const my_string other) const {printf(operator (const my_string other) %s \n, other.data);my_string NewString;NewString.length length other.length;NewString.data new char[NewString.length 1];strcpy(NewString.data, data);strcpy(NewString.data, other.data);return NewString; //函数中定义的对象 返回该拷贝 }注意operator 和operator和friend的细节。 //输出 std::ostream operator (std::ostream os, const my_string str) {os str.data;return os; } std::istream operator(std::istream in, my_string str) {//或者按行输入获取字符串const size_t BUFFER_SIZE 1024;char buffer[BUFFER_SIZE] { 0 };in buffer;str.length strlen(buffer);delete[] str.data; //理论上都是已有对象进行输入 str.data new char[str.length 1];strcpy(str.data, buffer);return in; }3.3 测试代码 int main() {//默认构造函数测试my_string str; //默认构造函数my_string str_c(c string); //c字符串构造my_string str_str(str_c); //拷贝构造吧printf(size %d dara %s \n, str_str.size(), str_str.c_str());my_string str_move(std::move(str_str)); //移动语义if (str_str.c_str() nullptr){printf(size %d dara nullptr \n, str_str.size());}printf(size %d dara %s \n, str_move.size(), str_move.c_str());std::cout \nos str_move std::endl; //直接初始化 my_string str_move1 std::move(str_move);std::cout \nstr_move1 str_move1 std::endl;//std::cout \nstr_move str_move std::endl;//赋值构造my_string str_cp str_move1;std::cout \nstr_move1 str_move1 std::endl;std::cout \nstr_cp str_cp std::endl; //赋值初始化 my_string str_cp_by_operator;my_string str_move_by_operator;str_cp_by_operator str_cp;std::cout \nstr_cp_by_operator str_cp_by_operator std::endl;std::cout str_cp str_cp std::endl;str_move_by_operator std::move(str_cp);std::cout \nstr_move_by_operator str_cp_by_operator std::endl;if (str_cp.c_str() ! nullptr){std::cout str_cp str_cp std::endl;}if (str_cp_by_operator str_move_by_operator){printf(\n operator is success! \n);}else{printf(\n operator is failed! \n);}my_string add str_cp_by_operator str_move_by_operator;std::cout add add std::endl;printf(please input str:);std::cin str;std::cout os str std::endl;return 0; }3.4结合结果分析
http://www.hkea.cn/news/14373395/

相关文章:

  • 零基础网站建设教学视频国外idc网站
  • 个人网站规划书模板网站开发应聘信息
  • 合肥手机网站制作宝洁网站建设
  • 什么网站可以用视频做背景wordpress判断首页
  • c mvc 大型网站开发正能量网站地址污的
  • 正规网站建设空间中国国家城乡建设部网站
  • 爱站网站排名查询工具怎样推广品牌
  • wordpress edd 会员西安seo天勤网络营销
  • 求网站建设网站优化工作wordpress 图片链接下载
  • 山西百度网站建设做网站的app
  • 面试网站建设的问题做音乐网站需要什么
  • phpcms v9企业网站模板:蓝色电子科技公司网站模板免费logo设计图案
  • 如何用网站做淘宝客网站后台模板html5
  • 工伤保险网站wordpress本站只对会员开放
  • 做网站公司会场主持台词个人网站建设代码
  • 如何建设视频网站刚刚封城最新消息2021
  • 京东网站 用什么做的网站建设管理中se是什么意思
  • wordpress全站广告位抖音小程序代理
  • 宾川网站建设企业展示型网站php
  • 一个好的网站应该具有什么吉林省建设工程安管人员管理系统
  • 济南正宗网站建设报价网站ico制作
  • 中小企业一站式服务平台三合一网站什么开发好
  • 网站打开显示站点目录做网站动态背景的图片
  • 宁夏住房和城乡建设厅网站福建省环保厅网站建设项目验收
  • 合肥网站建设设计外包百度云 做网站
  • 旅游网站建设ppt模板做外包网站的公司是怎样的
  • 宏大建设集团有限公司网站江华网站建设
  • 网站请人做要多少钱德化住房和城乡建设网站
  • 网站数据库一般多大如何做广告宣传与推广
  • dw做的网站后台是什么锡林郭勒盟建设厅官方网站