C++的一个特点是可以将复杂对象作为成员变量或局部变量进行分配,而不总是必须使用 new
进行分配。但这也引出了在任何给定情况下选择哪种分配方式的问题。
是否有一些好的标准来选择如何分配变量?应该在什么情况下声明成员变量为普通变量而不是引用或指针?在什么情况下应该使用 new
分配变量,而不是使用在堆栈上分配的局部变量?
C++的一个特点是可以将复杂对象作为成员变量或局部变量进行分配,而不总是必须使用 new
进行分配。但这也引出了在任何给定情况下选择哪种分配方式的问题。
是否有一些好的标准来选择如何分配变量?应该在什么情况下声明成员变量为普通变量而不是引用或指针?在什么情况下应该使用 new
分配变量,而不是使用在堆栈上分配的局部变量?
char buffer[1024 * 1024]; // 1MB buffer
但不是
std::vector<char> buffer(1024 * 1024);
由于第二个实际上是一个非常小的对象,它包装了指向堆分配缓冲区的指针。
至于指针与值成员:
当然,在适当的情况下建议使用智能指针。请注意,在堆分配的情况下可以使用引用,因为您始终可以delete &ref
,但我不建议这样做。引用是伪装成指针的指针,只有一个区别(引用不能为null),但它们也传达了不同的意图。