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

网站做词网站开发合同模版

网站做词,网站开发合同模版,seo综合查询工具有什么功能,怎么做短链接网站拷贝构造函数(string str1 str2/string str1(str2都会调用拷贝构造) my_class_type(const my_class_type & another) 若不提供,系统会提供默认; 系统提供的默认是一种等位拷贝(浅拷贝),浅…

拷贝构造函数(string str1 = str2/string str1(str2都会调用拷贝构造)

 my_class_type(const my_class_type & another)

若不提供,系统会提供默认;

系统提供的默认是一种等位拷贝(浅拷贝),浅拷贝导致两个指针指向同一块内存地址,析构时会导致内存重析构

同类之间没有隐私(可以访问private类成员)

在含有堆空间的情况下,要自实现拷贝构造

#include <iostream>
#include <string.h>
using namespace std;class mystring
{public:mystring(const char * mystr = "");mystring(const mystring & another);~mystring();char* c_str();private:char * p;int len;
};mystring::mystring(const char * mystr)
{if(mystr == nullptr){len = 1;*p = '\0';}else{len = strlen(mystr) + 1;p = new char[len];strcpy(p,mystr);}
}
mystring::mystring(const mystring &another)
{len = another.len;p = new char[len];strcpy(p,another.p);
}
mystring::~mystring()
{delete []p;
}
char* mystring::c_str()
{return p;
}int main()
{mystring str1;mystring str2("abcdefg");mystring str3(str2);cout << str1.c_str() << endl;cout << str2.c_str() << endl;cout << str3.c_str() << endl;return 0;
}

this指针

只能在类内部使用

是在创建对象时附带的指向当前对象的指针

#include <iostream>
using namespace std;class stu
{public:stu(string name = "bob",int age = 18);void show();stu & growup();private:string name;int age;
};stu::stu(string name,int age)
{this->name = name;this->age = age;
}void stu::show()
{cout << "name is " << name << " ----- age is " << age << endl;
}stu & stu::growup()
{this->age ++;return *this;
}int main()
{stu stu1;stu stu2("dick",20);stu1.show();stu2.show();stu2.growup().growup().growup().growup().growup().growup().show();}

赋值运算符重载

my_class_type& operator=(const my_class_type & another)

对于运算符重载的固定格式classname& operator运算符 (classname myclass1,classname myclass2),加不加&要看会不会产生一个新对象,如果产生则不加&,因为返回引用通常用于修改调用对象或者返回某个已存在的对象

系统会默认提供,是等位拷贝赋值(浅赋值),会导致重析构、自身内存泄漏以及无法完成自赋值

mystring & mystring::operator=(const mystring &another)
{if(this == &another)return *this;delete []this->p;this->len = another.len;this->p = new char[this->len];strcpy(this->p,another.p)return *this;
}

拷贝构造函数发生的时机:

  1. 使用一个已有对象创建一个新对象,mystring str2 = str1;或者mystring str2(str1);

  2. 传参或者函数返回对象(对于普通对象,传引用效果不明显,但对于类对象,传引用可以比传参少进行一次拷贝构造和析构)

传引用等价于扩大了原对象的作用域

栈上的对象是可以返回的(会产生一个中间变量去接收,即使这个函数中的变量消亡也不影响)

栈上的引用不可返回(函数内的变量消亡,其引用也会消亡)除非返回对象本身(return *this)

补充:

my_class_type& operator=(const my_class_type & another)不加上my_class_type后的&会导致(a=b)=c本来应该是a为c的大小,但是这里会变成b的大小,因为不返回引用就需要在栈上创建一个新的对象以保存中间变量,但是栈很快就会销毁,导致无法传回

http://www.dtcms.com/wzjs/818203.html

相关文章:

  • 湖南企业建站系统信息xp怎么建设网站
  • 电商平台网站建设合同超炫酷的网站
  • 做python项目的网站做简单网站怎么做
  • 网站开发用px好还是em好seo sem sns的区别
  • 厦门网站排名优化费用个人免费展示网站
  • 郑州商务网站建设如何制作软件程序
  • 惠州网站建设电话wordpress qtranslate
  • 做英文网站賺钱淄博网页设计师招聘
  • 企业建设网站的步骤是什么网站建设优化加盟代理
  • 个人网站和企业网站的区别电子商务主要学什么主要干啥
  • 网站跟别的做的一样的网站多语言版本
  • 移动网站转换环球贸易网网址
  • 网站优化建设哈尔滨企业网站建设自己的官网
  • 中国建设教育协会网站查wordpress 怎么安装插件
  • 苏州高端网站建设定制wordpress 建门户网站
  • 做网站的核验单 是下载的吗三亚北京网站建设
  • 公众号h5网站开发统一e商城app下载
  • 一般哪些商家需要建设网站国内网站备案流程图
  • 运城 网站 建设 招聘wordpress评论样式
  • 深圳哪家制作网站好网站开发中设计登录界面
  • 河北衡水建设网站公司电话网页游戏排行榜前十名2023
  • 网站建设培训西安哈尔滨网站备案手续费
  • 大学网站建设的目标与思路中国商标网官方查询系统
  • 如何做快递api接口网站桂林象鼻山照片
  • 建湖专业做网站的公司公司网站的开发策略
  • wordpress 安装 数据库连接错误宁波网站优化方法
  • 友情链接交换网站微商营销软件商城
  • 一么多设计公司关键词优化的五个步骤
  • 招工网站怎么做东海做网站公司
  • 广安网站建设公司学历提升机构的套路