提问人:Osman 提问时间:9/24/2022 更新时间:9/24/2022 访问量:75
C++ 返回值优化和返回复杂类问题
c++ return value optimization and returning complex class problem
问:
根据这个问题和答案,当我们从函数返回一个对象时,它取决于编译器和 c++ 版本如何返回,它可以被移动、复制或省略。
想象一下我有复杂的类,例如(可能更复杂)
class Basket{
public:
Basket (); // ctor
~Basket (); // dtor
Basket (Basket &); // copy ctor
Basket (Basket &&); // move ctor
Basket & operator= (Basket &); // copy assignment
Basket & operator= (Basket &&); // move assignment
// getter setters
private:
vector<Products> product_list;
vector<Liked> liked_list;
}
class Customer
{ // Note: All methods have side effects
public:
Customer (); // ctor
~ Customer (); // dtor
Customer (Customer &); // copy ctor
Customer (Customer &&); // move ctor
Customer & operator= (Customer &); // copy assignment
Customer & operator= (Customer &&); // move assignment
// getter setters
private:
vector<int*> some_ptrs;
vector<Adress> adress_list;
CustomerInfo customer_info;
vector<Basket> basket;
};
Customer get_customer(int id) {
Customer customer = db.get_customer(id);
return customer;
}
如果我的复制和移动语义有副作用,并且不清楚使用哪种方法,我该如何编写一致且高效的代码?
有哪些最佳实践可以确保我的代码按预期和高效工作,而不管使用的 c++ 的实现和版本如何。
答: 暂无答案
评论
Basket
int
Customer
Customer
get_customer
return db.get_customer(id);
int*