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

宁波建站seo推广优化工具

宁波建站,seo推广优化工具,网站关键词排名查询,江西建设工程信息网拷贝和复制是一个意思#xff0c;对应的英文单词都是copy。对于计算机来说#xff0c;拷贝是指用一份原有的、已经存在的数据创建出一份新的数据#xff0c;最终的结果是多了一份相同的数据。例如#xff0c;将 Word 文档拷贝到U盘去复印店打印#xff0c;将 D 盘的图片拷…拷贝和复制是一个意思对应的英文单词都是copy。对于计算机来说拷贝是指用一份原有的、已经存在的数据创建出一份新的数据最终的结果是多了一份相同的数据。例如将 Word 文档拷贝到U盘去复印店打印将 D 盘的图片拷贝到桌面以方便浏览将重要的文件上传到百度网盘以防止丢失等都是「创建一份新数据」的意思。 在 C 中拷贝并没有脱离它本来的含义只是将这个含义进行了“特化”是指用已经存在的对象创建出一个新的对象。从本质上讲对象也是一份数据因为它会占用内存。 严格来说对象的创建包括两个阶段首先要分配内存空间然后再进行初始化 分配内存很好理解就是在堆区、栈区或者全局数据区留出足够多的字节。这个时候的内存还比较“原始”没有被“教化”它所包含的数据一般是零值或者随机值没有实际的意义。初始化就是首次对内存赋值让它的数据有意义。注意是首次赋值再次赋值不叫初始化。初始化的时候还可以为对象分配其他的资源打开文件、连接网络、动态分配内存等或者提前进行一些计算根据价格和数量计算出总价、根据长度和宽度计算出矩形的面积等等。说白了初始化就是调用构造函数。很明显这里所说的拷贝是在初始化阶段进行的也就是用其它对象的数据来初始化新对象的内存。 那么如何用拷贝的方式来初始化一个对象呢其实这样的例子比比皆是string 类就是一个典型的例子。 ​ #include iostream #include string using namespace std; void func(string str){ coutstrendl; } int main(){ string s1 http://c.biancheng.net; string s2(s1); string s3 s1; string s4 s1 s2; func(s1); couts1endls2endls3endls4endl; return 0; } ​ 运行结果 http://c.biancheng.net http://c.biancheng.net http://c.biancheng.net http://c.biancheng.net http://c.biancheng.net http://c.biancheng.net s1、s2、s3、s4 以及 func() 的形参 str都是使用拷贝的方式来初始化的。 对于 s1表面上看起来是将一个字符串直接赋值给了 s1实际上在内部进行了类型转换将 const char * 类型转换为 string 类型后才赋值的这点我们将在《C转换构造函数》一节中详细讲解。s4 也是类似的道理。对于 s1、s2、s3、s4都是将其它对象的数据拷贝给当前对象以完成当前对象的初始化。 对于 func() 的形参 str其实在定义时就为它分配了内存但是此时并没有初始化只有等到调用 func() 时才会将其它对象的数据拷贝给 str 以完成初始化。 当以拷贝的方式初始化一个对象时会调用一个特殊的构造函数就是拷贝构造函数Copy Constructor。 下面的例子演示了拷贝构造函数的定义和使用 #include iostream #include string using namespace std;class Student{ public: Student(string name , int age 0, float score 0.0f); //普通构造函数 Student(const Student stu); //拷贝构造函数声明 public: void display(); private: string m_name; int m_age; float m_score; };Student::Student(string name, int age, float score): m_name(name), m_age(age), m_score(score){ }//拷贝构造函数定义 Student::Student(const Student stu){ this-m_name stu.m_name; this-m_age stu.m_age; this-m_score stu.m_score;coutCopy constructor was called.endl; }void Student::display(){ coutm_name的年龄是m_age成绩是m_scoreendl; }int main(){ Student stu1(小明, 16, 90.5); Student stu2 stu1; //调用拷贝构造函数 Student stu3(stu1); //调用拷贝构造函数 stu1.display(); stu2.display(); stu3.display();return 0; } 运行结果 Copy constructor was called. Copy constructor was called. 小明的年龄是16成绩是90.5 小明的年龄是16成绩是90.5 小明的年龄是16成绩是90.5 第 8 行是拷贝构造函数的声明第 20 行是拷贝构造函数的定义。拷贝构造函数只有一个参数它的类型是当前类的引用而且一般都是 const 引用。 1) 为什么必须是当前类的引用呢 如果拷贝构造函数的参数不是当前类的引用而是当前类的对象那么在调用拷贝构造函数时会将另外一个对象直接传递给形参这本身就是一次拷贝会再次调用拷贝构造函数然后又将一个对象直接传递给了形参将继续调用拷贝构造函数……这个过程会一直持续下去没有尽头陷入死循环。 只有当参数是当前类的引用时才不会导致再次调用拷贝构造函数这不仅是逻辑上的要求也是 C 语法的要求。 2) 为什么是 const 引用呢 拷贝构造函数的目的是用其它对象的数据来初始化当前对象并没有期望更改其它对象的数据添加 const 限制后这个含义更加明确了。 另外一个原因是添加 const 限制后可以将 const 对象和非 const 对象传递给形参了因为非 const 类型可以转换为 const 类型。如果没有 const 限制就不能将 const 对象传递给形参因为 const 类型不能转换为非 const 类型这就意味着不能使用 const 对象来初始化当前对象了。 以上面的 Student 类为例将 const 去掉后拷贝构造函数的原型变为 Student::Student(Student stu); 此时下面的代码就会发生错误 const Student stu1(小明, 16, 90.5);Student stu2 stu1;Student stu3(stu1); stu1 是 const 类型在初始化 stu2、stu3 时编译器希望调用Student::Student(const Student stu)但是这个函数却不存在又不能将 const Student 类型转换为 Student 类型去调用Student::Student(Student stu)所以最终调用失败了。 当然你也可以再添加一个参数为 const 引用的拷贝构造函数这样就不会出错了。换句话说一个类可以同时存在两个拷贝构造函数一个函数的参数为 const 引用另一个函数的参数为非 const 引用。 默认拷贝构造函数 在前面的教程中我们还没有讲解拷贝构造函数但是却已经在使用拷贝的方式创建对象了并且也没有引发什么错误。这是因为如果程序员没有显式地定义拷贝构造函数那么编译器会自动生成一个默认的拷贝构造函数。这个默认的拷贝构造函数很简单就是使用“老对象”的成员变量对“新对象”的成员变量进行一一赋值和上面 Student 类的拷贝构造函数非常类似。 对于简单的类默认拷贝构造函数一般是够用的我们也没有必要再显式地定义一个功能类似的拷贝构造函数。但是当类持有其它资源时如动态分配的内存、打开的文件、指向其他数据的指针、网络连接等默认拷贝构造函数就不能拷贝这些资源我们必须显式地定义拷贝构造函数以完整地拷贝对象的所有数据这点我们将在《C深拷贝和浅拷贝》一节中深入讲解。
http://www.w-s-a.com/news/95837/

相关文章:

  • 上海网站建设公司排行建设无障碍网站
  • phpcms网站打不开网页制作网站设计稿
  • 博客网站开发环境wordpress 中英文双语
  • 做网站报价表群辉装wordpress
  • 请人做游戏的网站视觉设计师的工作内容
  • 昆明网站建设知名企业博客网站开发
  • 如何做网站网页免费thinkphp网站后台模板
  • 怎么自己做优惠券网站济南小程序开发
  • 南昌网站专业制作做仿站如何获取网站源码
  • qq钓鱼网站wordpress 企业站模板
  • 推进文明网站建设免费设计公司logo设计
  • 做电脑租赁网站server 2008 网站部署
  • 做网站的公司一年能赚多少钱wordpress作者增加分类插件
  • 苏州尚云网站建设专业摄影网站推荐
  • 020网站开发微信公众号直接链接网站怎么做
  • 学做烘焙的网站某网站注册需要邮箱是怎么弄
  • 网站的特效代码公司网站开发的工作内容
  • 网站制作哪家好商城网站建设预算要多少钱
  • 怎么做律所的官方网站微网站可以做商城吗
  • 通用网站后台管理系统(php版)网站备案ip查询网站查询
  • 制作网站代码吗江阴网站建设推广
  • 汕头建网站wordpress文章网址采集
  • 十大景观设计网站用vue框架做的网站
  • 福建省建设监理网官方网站做外贸网站卖什么东西好
  • 公司做网站排名东莞关键词优化推广
  • 连云港做企业网站公司全网营销与seo
  • 电子毕业设计代做网站wordpress 插件放在那
  • 黄石规划建设局网站怎么做存储网站
  • 网站安装wordpress滨江网站建设
  • 河南官网网站建设一般使用的分辨率显示密度是