MST

星途 面试题库

面试题:C++ 中拷贝构造函数的触发场景

请详细列举在 C++ 编程中,哪些情况下会触发拷贝构造函数?并分别给出简单示例代码进行说明。
16.1万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 用一个已有的对象初始化新对象时
#include <iostream>
class MyClass {
public:
    int data;
    MyClass(int num) : data(num) {}
    MyClass(const MyClass& other) : data(other.data) {
        std::cout << "拷贝构造函数被调用" << std::endl;
    }
};
int main() {
    MyClass obj1(10);
    MyClass obj2 = obj1; 
    return 0;
}
  1. 函数参数为类对象值传递时
#include <iostream>
class MyClass {
public:
    int data;
    MyClass(int num) : data(num) {}
    MyClass(const MyClass& other) : data(other.data) {
        std::cout << "拷贝构造函数被调用" << std::endl;
    }
};
void func(MyClass obj) {
    std::cout << "函数内部,data: " << obj.data << std::endl;
}
int main() {
    MyClass obj(10);
    func(obj); 
    return 0;
}
  1. 函数返回值为类对象时
#include <iostream>
class MyClass {
public:
    int data;
    MyClass(int num) : data(num) {}
    MyClass(const MyClass& other) : data(other.data) {
        std::cout << "拷贝构造函数被调用" << std::endl;
    }
};
MyClass func() {
    MyClass temp(10);
    return temp; 
}
int main() {
    MyClass result = func(); 
    return 0;
}