使用新的对象
Using new with an object
我正在学习如何使用QT制作程序。我的问题是我不太擅长的三件事:指针,对象和" new()"。
look :(对话是一类)
//start of code...
...
private:
Dialog *mDialog; //Dialog is a class
...
void MainWindow::on_activationNew_window_triggered()
{
mDialog = new Dialog(this); // Explain me this "this"
}
...
//end of code
向我解释该线的工作原理,"这"(或是)的作用。
我所知道的只是mdialog是一个窗口的类,当示波器结束时,窗口关闭,因此他将其制作指针并使用新的,因为它将使用堆栈内存,这意味着它不会关闭范围结束时的窗口。
如果您想观看他正在制作的视频的一部分,并解释了这一点(也许我还不够清楚),这是视频(从8:07开始):
http://www.youtube.com/watch?v=wuh_gu2hdqe&feature=relmfu
tnks提供任何帮助!
正如其他人所说的,"这"是指调用的对象。就像:
class X {
public:
int y;
};
如果您写
X obj_X;
obj_x将具有名称为" this"的变量。它将用于访问自身,并且最常用于将类对象传递到另一个方法/类/任何东西。
现在,关于qt :)
每个QT对象都有父。这是QT内部工作的很多,但这就像一个对象拥有另一个。要指定父对象是什么,什么是孩子,您将父母的地址发送到孩子的构造函数。
所以,你也可以做 对话框mdialog(this);
这意味着与"新"操作员无关。因此,让我们开始:
Dialog mDialog(/*< constructor parameters >*/); << HERE!
" this"已发送到Mdialog的构造函数,以指定其具有父级。父母是" this"指向的对象。您也可以像
一样做Dialog mDialog(); // In which case mDialog has NO parent, because 0 parameteres went to the constructor
这很简单:)。获取您的C 书籍并阅读有关构造函数的更多信息,并在Internet上获得更多QT教程。祝你好运!
"这"是一个C 概念。
所以说我创建了一个在C 中的狗的类
class Dog
{
public:
Dog(); //default constructor
Dog(const Dog&); //copy constructor
};
Dog::Dog(const Dog& original)
{
if (&original != this)
//do whatever;
}
a(非静态)成员函数是一个函数,该函数称为类型的隐式参数。在定义
中void MainWindow::on_activationNew_window_triggered()
{ //...
}
MainWindow::
表示所定义的函数是类MainWindow
的成员函数。在(非静态)成员函数中,关键字this
是指向该隐式参数的指针。(另外,如果您只命名member
这样的课程成员,那么this->member
确实很短。)
因此,在您引用的功能中,this
的类型为MainWindow* const
。
看起来代码正在将MainWindow
的指针传递给Dialog
构造函数。
this
是指可用于属于类(或联合或结构)的非静态成员函数的指针。它指向调用成员函数的对象(在这种情况下,MainWindow
)。
将其传递到Dialog
的构造函数中的原因是QT的对象模型。有关此信息的更多信息,请参阅以下文档:
http://qt-project.org/doc/qt-4.8/objecttrees.html
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 代理对象的常量正确性
- 提升 ASIO 无法识别计时器对象
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 如何返回一个类的两个对象相加的结果
- 使用std::函数映射对象方法
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 构造对象的歧义
- 使用"std::unordereded_map"映射到"std::list"对象