首页 > 代码库 > C++类中的特殊成员函数-------复制构造函数
C++类中的特殊成员函数-------复制构造函数
在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=http://www.mamicode.com/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; }
C++类中的特殊成员函数-------复制构造函数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。