C++类中的特殊成员函数-------复制构造函数
2018-06-17 22:12:54来源:未知 阅读 ()
在C++中存在一个特殊函数,他就是复制构造函数,假如我们有类A,如果有A a;A b=a; 在这种情况下利用A类变量a来给同是A类变量的b来赋值,这个时候类会使用复制构造函数,如果我们不显式声明复制构造函数,那么类将会调用默认的复制构造函数。下面的代码说明了这一情况,如果我们将类StringBad中的复制构造函数StringBad(StringBad &)去掉,那么count最后输出的结果会为复制(count为静态变量用来记录类StringBad的对象个数)。
main.cpp
#include <iostream> #include"StringBad.h" using namespace std; int main() { StringBad * src=new StringBad("src"); StringBad srb("srb"); StringBad srd=srb; delete src; return 0; }
StringBad.h
#include<iostream> #include<stdio.h> using namespace std; class StringBad{ public: static int count; char * name; StringBad(char * name); StringBad(StringBad &); ~StringBad(); };
StringBad.cpp
#include"string.h" #include<iostream> #include<stdio.h> #include"StringBad.h" using namespace std; int StringBad::count=0; StringBad::StringBad(char * name){ this->name=new char(strlen(name)+1); strcpy(this->name,name); count++; cout<<"创建新对象"<<(this->name)<<"后,还有"<<count<<"个对象"<<endl; } StringBad::~StringBad(){ count--; cout<<"析构"<<(this->name)<<"之后,还有"<<count<<"个对象"<<endl; } StringBad::StringBad(StringBad & s) { count++; this->name=new char(strlen(s.name)+1); strcpy(this->name,s.name); cout<<"调用复制函数后,还有"<<count<<"个对象"<<endl; }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:09:LGTB 学分块
下一篇:自制贪吃蛇——会移动的蛇
- C++ 转换函数搭配友元函数 2020-06-10
- C++ 自动转换和强制类型转换(用户自定义类类型) 2020-06-10
- C++ rand函数 2020-06-10
- C++ 友元函数 2020-06-10
- C++ 运算符重载 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash