給定一個有兩個方法需要共享變量的類什麼是在它們之間傳遞/共享該變量的最佳方式?假設該類別中的其他地方不需要該變量。如果該變量是一個STL容器,這是否會改變什麼?在同一類中的方法之間共享對象的C++優先方式
我考慮了以下三個選項:
在一個方法實例化的變量,並通過指針返回它,然後將其刪除的另一種方法。
class MyClass
{
public:
std::vector<int>* method1();
void method2();
};
std::vector<int>* MyClass::method1()
{
std::vector<int> *my_int_vector = new std::vector<int>;
//manipulate the vector in some way
return my_int_vector;
}
void MyClass::method2()
{
std::vector<int> *myvector;
myvector = this->method1();
//manipulate the vector in some way
delete myvector;
}
這種分離新這似乎是乞討出問題方法之間刪除。
或者,您可以使用類私有成員屬性來保存該變量。
class MyClass
{
private:
std::vector<int> myvector;
public:
void method1();
void method2();
};
void MyClass::method1()
{
//manipulate this->myvector
}
void MyClass::method2()
{
this->method1();
//manipulate this->myvector
}
這會不必要地將變量暴露給類的其餘部分。
最後,您可以在一個方法中創建一個對象並通過引用傳遞它。
class MyClass
{
public:
void method1(std::vector<int> *my_int_vector);
void method2();
};
void MyClass::method1(std::vector<int> *my_int_vector)
{
//manipulate my_int_vector in some way
}
void MyClass::method2()
{
std::vector<int> myvector;
this->method1(&myvector);
//manipulate myvector in some way
}
對我來說,這似乎是最好的解決辦法,你不調用new或刪除和變量是不提供給全班同學。
我的評估是否正確,我錯過了哪些更好的選擇?
決不使一些靜態和返回一個引用出於性能原因。 –
@SebastianRedl永遠不會?如果它成爲一個問題,我會說_measure_。或者如果你能看出它爲什麼會成爲一個問題,那麼就不要這樣做。 – emlai