class CExample { private: int a; public: //构造函数 CExample(int b) { a = b; cout << "creat: " << a << endl; } //拷贝构造 CExample(const CExample& C) { a = C.a; cout << "copy" << endl; } //析构函数 ~CExample() { cout << "delete: " << a << endl; } void Show() { cout << a << endl; } }; //全局函数,传入的是对象 void g_Fun(CExample C) { cout << "test" << endl; } int main() { CExample test(1); //传入对象 g_Fun(test); return 0; }这个程序中为什么会调用拷贝构造函数
时间: 2024-03-11 18:44:55 浏览: 56
cExample.rar_VC书籍_C/C++_
在程序中,对象 `test` 是通过构造函数 `CExample(int b)` 创建的,而在调用 `g_Fun(test)` 时,`test` 作为参数传递给了函数 `g_Fun`,这里的参数是按值传递的。因此,会发生对象的复制,即会调用拷贝构造函数 `CExample(const CExample& C)` 来创建一个新的对象,这个新对象与原对象 `test` 具有相同的值。所以在程序中会调用拷贝构造函数。
阅读全文