代码之家  ›  专栏  ›  技术社区  ›  Jes321

当对象作为参数传递时,为什么不调用自定义构造函数?[副本]

  •  0
  • Jes321  · 技术社区  · 2 年前

    我有以下代码:

    
    struct Entity {
        Entity() {
            std::cout << "[Entity] constructed\n";
        }
    
        ~Entity() {
            std::cout << "[Entity] destructed\n";
        }
    
        void Operation(void) {
            std::cout << "[Entity] operation\n";
        }
    };
    
    void funcCpy(Entity ent) {
        ent.Operation();
    }
    
    int main() {
        Entity e1;
    
        funcCpy(e1);
    }
    

    这是输出:

    [Entity] constructed
    [Entity] operation
    [Entity] destructed
    [Entity] destructed
    

    我希望我的函数使用自定义构造函数,所以输出如下:

    [Entity] constructed
    [Entity] operation
    [Entity] constructed
    [Entity] destructed
    [Entity] destructed
    

    为什么会这样?我如何使用自定义构造函数呢?

    谢谢:)

    1 回复  |  直到 2 年前
        1
  •  0
  •   Max Zhao    2 年前

    https://en.cppreference.com/w/cpp/language/copy_constructor

    对象作为参数将调用类的复制构造函数