【发布时间】:2021-04-14 16:57:39
【问题描述】:
我对 c++ 语言还很陌生,但是我有使用 python 和一点 java 的经验。
由于 c++ 非常强大,而且实现某些行为的方法总是很少,我有 2 个与 oop 相关的问题。
-
用参数创建类构造函数的最佳方法是什么? 例如,假设我们有这样的东西:
结构测试{ 诠释 x; 整数y; };
构造函数有两种流行的方式:
1.
Test(int x, int y) : x{x}, y{y} { // rest of constructor};
Test(int x1, int y1) {
x = x1;
y = y1;
// rest of constructor
}
我应该使用哪一个?为什么?
-
哪种风格更像c++来创建类对象,为什么?
Test* testptr = new Test(1, 1);
对
Test test = Test(1, 1);
【问题讨论】:
-
对于这个结构,您可能不需要或不需要构造函数。您可以创建一个像
Test myTest{2,3};这样的变量,它将x 初始化为2,将y 初始化为3。 -
对于这样的结构,对于问题 #2,我可能不会使用任何选项。我会再次使用
Test myTest{2,3};大部分时间。不鼓励在c++中使用new,这是一个小结构。 -
视情况而定,选择哪个选项。你可能还想要
std::unique_ptr<Test> -
这可能会有所帮助,但它出现在 c++11 之前,其中包括智能指针和不鼓励使用
new和原始拥有指针的转变:https://stackoverflow.com/questions/1021138/differences-between-dynamic-memory-and-ordinary-memory -
请对每个 SO 问题提出一个问题。您有两个非常不同的问题。