[英]Use assignment operator instead of calling a function in C++
我對C ++相當陌生,所以它弄亂了我的googlefu。 我只是不確定我想問什么。
我想知道是否有可能做到這一點,以便您可以簡單地使用賦值運算符將值傳遞給對象。
與我所談論的最接近的事情是使用@public和@ myVar.setter時Python的工作方式。 然后您可以說:
class MyClass(object):
@public
def myVar(self):
return self._myVar
@myVar.setter
def myVar(self, value):
self._myVar = value;
MyClass.myVar = 12
Print MyClass.myVar
這將顯示12,但不必調用myVar方法,因為通常將函數稱為“ myVarSet(12)”和“ myVarGet()”。
我問的原因是因為我了解“字符串”不是真正的數據類型,而是本質上是char數組。 這意味着當您包含字符串時,它可以通過賦值運算符以某種方式進行一些有趣的操作。 不必像下面那樣分配變量:
char word[5] = { "h","e","l","l","o" };
您可以簡單地說:
string word = "hello";
如果人們希望能夠對其他類型的數組執行類似的操作怎么辦? 假設我想要一個整數數組,並像這樣分配它們:
Foo intarray = 13235;
而不是說:
Foo intarray;
intarray.setVar(.....)
我該怎么做? 可能嗎?
您所有的所謂分配都不是分配,而是初始化。
string word = "hello";
是復制初始化 。
string word;
word = "hello";
是初始化,然后是賦值 。
是的,這完全有可能,您只需要重載賦值運算符即可:
class Foo{
Foo& operator = ( whatever );
};
但是 ,這似乎並不是您想要的。 如果我沒記錯的話,您正在尋找一種使用一些值構造對象的方法,這就是構造函數的用途:
struct Foo{
Foo(int x) : _x(x) {}
int _x;
};
現在你不會寫
Foo foo;
foo._x = 5;
但直接
Foo foo(5);
去做
Foo foo = Foo(5);
您還需要一個公開可見的副本構造函數(在這種情況下,默認的,由編譯器生成的副本構造函數將起作用)。 如果要管理資源,也要考慮三個規則。
這些都是基本內容,相信我,這里的范圍已縮小很多 。 最好是用書學習C ++。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.