复制构造函数的例子
时间: 2023-08-12 13:24:26 浏览: 35
以下是一个简单的复制构造函数的例子:
```c++
#include <iostream>
using namespace std;
class MyClass {
public:
int x;
MyClass(int a) { x = a; } // 构造函数
MyClass(const MyClass &obj) { x = obj.x; } // 复制构造函数
};
int main() {
MyClass obj1(10); // 调用构造函数
MyClass obj2 = obj1; // 调用复制构造函数
cout << obj2.x; // 输出 10
return 0;
}
```
在上面的例子中,我们定义了一个名为`MyClass`的类,其中包括一个构造函数和一个复制构造函数。复制构造函数使用`const`关键字和引用参数来接受一个同类对象,并将其成员变量的值复制到新对象中。在`main()`函数中,我们首先创建了一个名为`obj1`的对象,然后使用复制构造函数将其复制到名为`obj2`的新对象中。最后,我们输出了`obj2`的成员变量`x`的值,该值应该与`obj1`的成员变量`x`的值相同。
相关问题
C++中 复制构造函数举例
好的,让我来回答你的问题。在C++中,复制构造函数是一种特殊的构造函数,用于创建一个新对象并将其初始化为已有对象的副本。这个函数将在以下情况下调用:1.当使用一个对象来初始化另一个同类型的新对象时;2.当传递一个对象作为参数给函数,并在函数内部复制它时。下面是一个使用C++复制构造函数的示例:
```
#include <iostream>
using namespace std;
class MyClass{
private:
int x;
public:
MyClass(int a)
{
x = a;
}
MyClass(const MyClass& obj)
{
x = obj.x;
cout << "复制构造函数被调用" << endl;
}
void showData()
{
cout <<"x = "<< x<<endl;
}
};
int main()
{
MyClass obj1(10);
MyClass obj2 = obj1; //使用对象1初始化对象2
obj1.showData();
obj2.showData();
return 0;
}
```
在上面的代码中,我们定义了一个名为MyClass的类,并为它编写了一个复制构造函数。在main函数中,我们创建了两个MyClass对象。在创建对象obj2时,我们使用了obj1来初始化它,这将自动调用复制构造函数将obj1复制到obj2中。输出结果如下:
```
复制构造函数被调用
x = 10
x = 10
```
我希望这个例子对你有所帮助。如果你还有其他的问题,请继续问我。
C++复制构造函数和析构函数
C++中的复制构造函数和析构函数是两个重要的概念,它们都是类的成员函数。
复制构造函数(Copy Constructor)是一种特殊的构造函数,它用于创建一个新对象,该对象是已经存在的对象的副本。复制构造函数的参数是一个与当前对象类型相同的引用,它用于指定要复制的对象。复制构造函数通常用于将对象作为参数传递给函数或从函数返回对象。
以下是一个简单的例子:
```
class MyClass {
public:
MyClass(); // 默认构造函数
MyClass(const MyClass& other); // 复制构造函数
~MyClass(); // 析构函数
};
MyClass::MyClass() {
// 初始化操作
}
MyClass::MyClass(const MyClass& other) {
// 复制构造函数实现
}
MyClass::~MyClass() {
// 清理操作
}
```
在上面的例子中,我们定义了一个名为`MyClass`的类,并定义了默认构造函数、复制构造函数和析构函数。
析构函数(Destructor)是一个特殊的成员函数,用于销毁对象并释放其占用的资源。当对象被销毁时,析构函数将自动调用。析构函数通常用于释放动态分配的内存、关闭文件和释放其他资源。
例如:
```
MyClass obj; // 创建对象
obj.~MyClass(); // 手动调用析构函数
```
但是通常情况下,不需要手动调用析构函数,因为它会在对象被销毁时自动调用。