在Python3中,我有一個類Resistor
與方法series(self, other)
,返回一個新的Resistor
實例與阻力等於自我和其他系列電阻。將Python翻譯爲C++,從成員函數返回新實例是否正確?
class Resistor(object):
# a class to model a resistor
def __init__(self, res=0) :
# default is "typical" value
self.resistance = res
return
def series(self, other) :
# Returns a Resistor object with resistance equal to self + other
sum = self.resistance + other.resistance
return Resistor(sum)
由於變量是對象的引用,所以這個工作原理似乎是Python中的一個習慣用法。類比是Python字符串連接,其中操作newstr = str1 + str2
產生新的字符串對象newstr
。
如果我字面翻譯爲C++,這個工程:
class Resistor
{
public:
// data members
double resistance;
// member functions
Resistor(double res = 1000.0);
Resistor series(Resistor other);
};
Resistor::Resistor(double res)
{
resistance = res;
}
Resistor Resistor::series(Resistor other)
{
Resistor r = Resistor(resistance + other.resistance);
return r;
}
最後我的問題......我是安全的這個直譯?當局部變量r
超出範圍時,新的Resistor
實例會發生什麼?我是否創建了內存泄漏?我應該使用指針(我從C中知道是詭計多端)?
在此先感謝
快速提示。使用'sum'會陰影內置的總和。你應該改變那些不會衝突的東西。 – idjaw
好點,謝謝。 –