使用新的对象

Using new with an object

本文关键字:对象      更新时间:2023-10-16

我正在学习如何使用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