手把手教你如何使用C 复制构造函数
C 是一种非常广泛使用的计算机编程语言,作为C语言的继承,它支持多范型的通用程序设计语言。C 可以支持过程化程序设计、数据抽象化、面向对象程序设计、泛型程序设计等多种程序设计风格。C 在系统开发、引擎开发等应用领域得到广泛应用,深受程序员的喜爱。
使用Dev-C 来编写C 代码
1. 首先,双击或右击打开桌面上的Dev-C 软件,确保它已经成功运行。Dev-C 是一个适合于初学者使用的入门级C/C 集成开发环境(IDE),在Windows窗口运行环境下非常方便。
2. 点击文件选项,选择新建源代码。此时新建的代码文本还没有命名,是一个空文件。为了方便日后找到文件,可以选择另存为,并将文件保存在电脑的桌面上或任何其他盘符中。
复制构造函数的定义和使用
C 中的复制构造函数形如X::X(X ),只有一个参数即对同类对象的引用。如果没有定义自己的复制构造函数,编译器会生成默认的复制构造函数。
例如,我们有一个Complex类:
```cpp
class Complex {
private:
double real, imag;
public:
Complex(Complex c) {
real ;
imag ;
cout << "Copy Constructor called" << endl;
}
};
```
在这个例子中,如果没有定义复制构造函数,编译器会生成默认的复制构造函数。
注意,不允许定义形如X::X(X)的构造函数,例如:
```cpp
class CSample {
CSample(CSample c) { // 错误,不允许这样的构造函数
}
};
```
即使缺省的不带参数的构造函数不存在,缺省的复制构造函数仍然存在。例如:
```cpp
class C1 {
public:
C1() {} // 默认构造函数
};
C1 c1, c2(c1); // 使用默认构造函数初始化c1和c2
```
复制构造函数的调用情况
复制构造函数在以下三种情况下被调用:
a. 用一个对象去初始化同类的另一个对象时:
```cpp
Complex c2(c1);
Complex c2 c1;
```
b. 如果某个函数的参数是类A的对象,那么当该函数被调用时,类A的复制构造函数将被调用:
```cpp
void f(A a) {
a.x 1;
}
A aObj;
f(aObj); // 调用A的复制构造函数,将aObj作为参数传入函数
```
通过以上步骤,你已经了解了如何使用C 的复制构造函数。希望这篇文章对你有所帮助!
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。