在 c++ 中,->是什么意思?
In c++ what does -> mean?
可能的重复项:
何时使用点、箭头或双冒号来引用 C++ 中的类的成员?
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
在上面的代码中,->是什么意思?谢谢。
它表示箭头左侧的对象是指向类或结构实例的指针,右侧的名称是该类或结构的成员。
在上下文中:
ui->setupUI(this);
这意味着 ui
是指向类 Ui::MainWindow
实例的指针,setupUI(this)
是使用该参数 this
调用该类的 setupUI
成员函数。
当你有一个类(或结构(的实际实例而不是指针时,你使用以下表示法:
Ui::MainWindow non_ptr; // not a pointer
non_ptr.setupUI(this);
严格来说,你也可以写:
(*ui).setupUI(this);
但是,如果您编写这样的代码而不是使用 ->
箭头运算符,您将理所当然地受到排斥。
>ui->
等效于(*ui).
(访问UI指向的对象的成员(。
ui->setupUi(this)
实际上是写(*ui).setupUi(this)
的简短方法。
PS:有人对你的问题投了反对票,所以我投了赞成票。致反对者:加油!那么,如果这是一个微不足道的问题呢?对于一个刚刚开始学习C++的人来说,这可能是一个完全合理的选择。
在大多数情况下,x->y
与 (*x).y
相同。像迭代器这样的东西可能会使->
过载以做一些额外的事情,但总的来说,这是一个速记。
它是 C 和 C++ 中的表示法,表示我们通过指针访问变量
假设ui
是指针类型(通过使用new UI::MainWindow
初始化它所暗示的那样(,那么ui->setupUi
等效于*(ui).setUi
。
但是,也可以为类重载operator->
,在这种情况下,它基本上等同于 ui.operator->(whatever)
。可能值得注意的是,重载operator->
的语义有些不寻常:x->
被解释为(x.operator->())->y
,所以重载operator->
必须返回某种returned_object->y
也是合法的类型——要么是另一个也重载operator->
的对象,要么是一个实际的指针。
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思