在c++中使用赋值操作符而不是调用函数
visual 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)"answers"myVarGet()"。
我问的原因是因为我理解"字符串"不是一个真正的数据类型,而本质上是一个char数组。这意味着,当您包含string时,它以某种方式有能力对赋值操作符做一些有趣的事情。而不是像下面这样赋值一个变量:
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++。
相关文章:
- 如何用参数值调用函数(仅在运行时已知)
- 从python中调用C++函数并获取返回值
- 当使用通配符和null指针调用函数时,对输出的说明
- 从R调用C++函数并对其进行集成时出错
- 使用QTreeView,如何通过调用函数只突出显示特定的行/列
- 如何在qt中从另一个类调用函数
- 在 COUT 语句中使用 COUT 调用函数
- 如何从线程中的不同模块调用函数?
- C++从函数指针数组调用函数
- 当 A 在 for 循环中调用函数 B 时,如何计算函数 A 的空间复杂度?
- 如何在 C/C++ 中从外部库调用函数
- 如何使用运算符在同一行中多次调用函数
- 是否可以创建一个从不同类调用函数的线程?
- 无法为类成员调用函数
- 如何从另一个标头 c++ 调用函数
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- 如何只允许在调用函数 B 后调用函数 A?
- 我可以这样调用函数吗?
- 如何在 c++ 的类中递归调用函数方法?
- 为什么在指向对象的迭代器上调用函数不允许我更改对象本身?