在C++中,将对象传递给另一个类的构造函数时,需要注意以下几点:
class A {
public:
A(const std::string& name) : name_(name) {}
private:
std::string name_;
};
class B {
public:
B(const A& a) : a_(a) {}
private:
A a_;
};
std::shared_ptr
或std::unique_ptr
)将对象传递给另一个类的构造函数。#include<memory>
class A {
public:
A(const std::string& name) : name_(name) {}
private:
std::string name_;
};
class B {
public:
B(std::shared_ptr<A> a) : a_(a) {}
private:
std::shared_ptr<A> a_;
};
class A {
public:
A(const std::string& name) : name_(name) {}
virtual ~A() = default;
private:
std::string name_;
};
class B : public A {
public:
B(const std::string& name) : A(name) {}
};
class C {
public:
C(A* a) : a_(a) {}
private:
A* a_;
};
template<typename T>
class C {
public:
C(const T& t) : t_(t) {}
private:
T t_;
};
class A {
public:
A(const std::string& name) : name_(name) {}
private:
std::string name_;
};
class B {
public:
B(const std::string& name) : name_(name) {}
private:
std::string name_;
};
int main() {
A a("A");
B b("B");
C<A> c1(a);
C<B> c2(b);
return 0;
}
需要注意的是,在将对象传递给另一个类的构造函数时,应该遵循C++的最佳实践,包括使用引用传递、智能指针、抽象基类和模板等。这样可以确保代码的可读性、可维护性和性能。
领取专属 10元无门槛券
手把手带您无忧上云