c++ - 对对象使用 new

标签 c++ class object pointers

<分区>

我正在学习如何使用 Qt 编写程序。我的问题是关于我不太擅长的三件事:指针、对象和“new()”。

看:(Dialog是一个类)

//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 是一个窗口类,当作用域结束时,窗口关闭,所以他创建那个指针并使用 new,因为它将使用堆栈内存,这意味着它不会关闭范围结束时的窗口。

如果你想观看他正在制作的视频部分并对此进行解释(也许我不够清楚),请看这里的视频(8:07 开始):

http://www.youtube.com/watch?v=wUH_gu2HdQE&feature=relmfu

感谢您的帮助!

最佳答案

正如其他人所说,“this”指的是调用它的对象。就像:

class X {
  public:
    int y;
};

如果你写

X obj_X;

obj_X 将有一个名为“this”的变量。它将用于访问自身,最常用于将类对象传递给另一个方法/类/任何东西。

现在,关于 Qt :)

每个 Qt 对象都有一个父对象。这用于 Qt 的很多内部工作,但它就像一个对象拥有另一个对象。要指定什么是父对象,什么是子对象,您将父对象的地址发送给子对象的构造函数。

所以,你也可以这样做 对话框 mDialog(this);

这意味着这件事与"new"运算符无关。那么让我们开始吧:

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++ - 对对象使用 new,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13096189/

相关文章:

javascript - 有没有办法在变量中存储对深层对象键的引用?

c++ - OpenMP 似乎没有并行运行

c++ - 这个成员函数选择代码可以在没有 std::invoke 的情况下编写吗?

c++ - 循环直到输入特定字符 (C++)

c++ - MFC CDialog::创建失败

python - 如何确定 Python 中对象的大小?

java - LinkedLists 和其中的对象

c# - C# 中的所有引用类型都是类类型吗?

perl - 在 HTML::Element 的 Look_down 例程 Perl 中指定多个类?

Python 属性错误 : Object has no attribute in Unittest