【发布时间】:2016-01-13 23:56:27
【问题描述】:
有人告诉我要避免在 C++ 中使用指针。似乎我无法避免它们,但是在我正在尝试编写的代码中,或者我可能错过了其他出色的 C++ 功能。
我希望创建一个包含另一个类 (class2) 作为数据成员的类 (class1)。然后我希望 class2 了解 class1 并能够与之通信。
我可以引用 class1 作为 class2 中的成员,但这意味着我需要在 class2 的构造函数中提供对 class1 的引用作为参数并使用我不想要的初始化列表。我正在尝试在不需要构造函数的情况下执行此操作。
我希望 class2 有一个名为 Initialise 的成员函数,它可以接收对 class1 的引用,但如果不使用指针,这似乎是不可能的。人们会在这里推荐什么?提前致谢。
代码完全简化,只是为了理解主要思想:
class class1
{
public:
InitialiseClass2()
{
c2.Initialise(this);
}
private:
class2 c2;
};
class class2
{
public:
Initialise(class1* c1)
{
this->c1 = c1;
}
private:
class1* c1;
};
【问题讨论】:
-
你是在问是否使用引用而不是指针,或者你是否不应该使用?
-
它的原始拥有指针是要避免的。
-
@Engineer999,你应该用勺子代替叉子吗?同问。指针是指针,引用是引用。它们有自己的适用性。
-
在嵌入式系统领域使用指针来访问硬件设备。在这种情况下,原始指针比智能指针工作得更好(更有效)。此外,没有分配“内存”,也没有删除。
标签: c++ class pointers pass-by-reference pass-by-pointer