#include <iostream> using namespace std; class Vector { public: Vector(int s=100); Vector(Vector &x); int& elem(int ndx); void display(); void set(); ~Vector(); private: int size; int *buffer; }; Vector::Vector(Vector &x) { size=x.size; buffer=(int*)new(int[size]); for(int i=0;i<size;i++) buffer[i]=x.buffer[i]; } Vector::Vector(int s) { buffer=new int[size=s]; for(int i=0;i<size;i++) buffer[i]=i*i; } int& Vector::elem(int ndx) { if(ndx<0||ndx>=size) { cout<<"error in index"<<endl; exit(1); } return buffer[ndx]; } void Vector::display() { for(int j=0;j<size;j++) cout<<buffer[j]<<endl; } void Vector::set() { for(int j=0;j<size;j++) buffer[j]=j+1; } Vector::~Vector() { delete[]buffer; } int main() { Vector a(10); Vector b(a); a.set(); b.display(); return 0; } 调用拷贝构造函数的情形 在C++中,下面三种对象需要调用拷贝构造函数: 1) 一个对象以值传递的方式传入函数体; 2) 一个对象以值传递的方式从函数返回; 3) 一个对象需要通过另外一个对象进行初始化;