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

知名建站公司昆明 做网站 vr

知名建站公司,昆明 做网站 vr,制作网站用的域名,自己做的导航网站拷贝构造函数 注意:访问权限是public 拷贝构造函数:类名(const 类名& 对象名){} 可以有多个参数 。 没有常引用就是普通构造函数 如果不写,编译器自己会给一个(作用仅仅是赋值,默认拷…

拷贝构造函数

注意:访问权限是public

拷贝构造函数:类名(const  类名& 对象名){}  可以有多个参数  。 没有常引用就是普通构造函数

如果不写,编译器自己会给一个(作用仅仅是赋值,默认拷贝构造函数一直都在)

#include<iostream>
using namespace std;class person {
public:int age;string name;person(int age,string name):age(age),name(name) {cout << "含参构造函数" << endl; }person(const person& p) {age = p.age;name = p.name;cout << "拷贝构造函数" << endl;}void show() {cout << "姓名:" << name << " | 年龄:" << age << endl;}~person() { cout << "析构函数" << endl; }
};int main()
{person p1(100,"xxx");person p2(p1);   //p2=p1 效果一样p1.show();p2.show();return 0;
}

函数值传递过程中会调用拷贝构造函数,因为函数形参本身就是一份赋值(值传递)

//伪代码
//注意,传引用和指针都不会激活拷贝构造
void f(person p) {p.show();
}person p;
f(p);void g(person* p){p->show();
}person *p=new person(x);  //有参就调用有参构造,否则默认构造
g(p);
delete(p);   //调用析构
p=NULL;

函数以值的方式返回对象时,可能会调用拷贝构造函数(vs会,linux不会,g++做了优化)

//伪代码
person f(person p)
{person pf(p);return pf;
}
person p(1, "sdf");
person p2 = f(p);
p2.show();//引用1
person& g()
{person p;    //每读到这句就一个默认构造return p;    //g函数结束就析构p
}
person p;
g()=p;
g().show();   //乱码//引用2
person& g(person& p)
{return p;
}
person p1;
person p2;
g(p1)=p2;
g(p1)->show();  //p2的值

注意析构函数调用时机:作用域结束(mian函数结束)

如果类重载拷贝构造函数,却没有定义默认构造函数,编译器会提供一个

class person {int age;person(int a):age(a){cout << "有参构造" << endl;}//person(const person& p) {     //注释默认构造//	cout << "默认拷贝构造" << endl;//	age = p.age;//}person(const person& p, int i){age = i;cout << "重载拷贝构造" << endl;}void show() {cout << "age:" << age << endl;}
};int main()
{person p(10);p.show();person p2(p);     //编译器又提供一个 p2.show(); return 0;
}

深浅拷贝

对空指针解引用是非法的       

#include<iostream>
using namespace std;class person {
public:int a;int* p;person(){a = 0; p = nullptr;cout << "person构造函数" << endl;}person(const person& per){a = per.a;//p = per.p;  //浅拷贝//深拷贝p = new int;    //分配内存*p = *per.p;    //拷贝数据cout << "person拷贝构造函数" << endl;}~person()   //浅拷贝问题:p1和p2指向同一个空间,p1销毁后,到p2销毁就会崩溃{delete p; p = nullptr;cout << "person析构函数" << endl;}void show(){cout << a << " " << p << " " << *p << endl;}
};int main()
{person p1;p1.a = 10; p1.p = new int(2);p1.show();person p2(p1);p2.show();return 0;
}

http://www.yayakq.cn/news/949241/

相关文章:

  • 下载官方购物网站汕头网站建设模板制作
  • app充值网站开发应用市场华为
  • ftp工具下载网站源码教程个人网站建设方案
  • 淄博网站建设排行榜长春电商网站建设公司电话
  • 湘潭做网站公司本周热点新闻事件
  • 货代网站建设泰安网站建设入门推荐
  • 做家乡的网站给网站人做网站
  • 写作网站哪个比较赚钱企业管理咨询机构
  • 阜新网站建设中建西部建设广通讯网站
  • 欧美教育网站模板路由器做网站服务器
  • cnzz网站建设教学优惠活动制作网站
  • 网站开发构建工具国家和城乡建设部网站
  • 手机商城网站wordpress搬家后变慢
  • 网站开发小程序关于网站建设费用的报告
  • 河南高端网站高端网站建设网站开发毕设开题报告
  • 平阳县城乡规划建设局网站品牌推广策略有哪些
  • 营销型网站策划wordpress主题国人
  • 专业网站建设公司怎么选我想借个企业邮箱
  • 墨刀可以做网站原型图吗it入门应该学什么
  • 电子商务网站系统规划为什么网站建设要将access数据库文件变成asa
  • 如何做高网站的浏览量定制开发教程
  • 建设网站请示推特登陆 网站建设
  • 让别人做网站推广需要多少钱北京it公司排名
  • 企业免费推广网站网站搭建详细步骤
  • 如何在网站上木马做58同城的网站要多少钱
  • 我是做网站怎么赚钱建湖网站开发
  • 山西房地产网站建设wordpress 后台进不去_如何替换主题
  • 大连网站建设实例建商城网站带app多少钱
  • 外包活加工官方网站wordpress gif
  • 烟台企业做网站wordpress 文章添加附件