c++ - QProcess *p 行不是多余的吗?

标签 c++ qt qprocess redundancy qt5.4

我偶然发现了 this GitHub 项目。

虽然我总体上不同意代码,但我无法完全理解这行代码:

QProcess *p;p=*it;

当我想创建一个完全多余的新指针时,我错了吗?或者我是否缺少它的某些目的,例如性能方面?

#define VM_COUNT 202
    cout << "Creating process objects" << endl;
    for(int i=0;i<VM_COUNT; i++)
        vms.push_back(new QProcess(parent));

    cout << "Processes created. Type 'asdf' or someting to start them...";
    string s;
    cin >> s;

    cout << "Starting processes" << endl;

    QProcess* p; // this <------
    QVector<QProcess*>::Iterator it;
    for(it=vms.begin(); it!=vms.end(); ++it){
        p=*it; // this <------
        p->start(command,args); // this <------
    }

我会简单地选择:

     for(it=vms.begin(); it!=vms.end(); ++it)
     {
        (*it)->start(command,args); // ty Mike
     }

最佳答案

它对于代码可移植性或匹配示例很有用。假设您找到一个使用 QProcess * p 100 行的示例,然后将其应用于进程 vector ,当您将 p 换成 时,可读性会受到影响(*iter) 在每个位置...但是如果您在局部范围的顶部分配一个具有相同名称的变量,您将获得可读性/可维护性。

Qt 还支持多种类型的迭代器、STL 风格、Java 风格和 boost foreach 风格。我更喜欢 foreach 风格,它对我来说代码量最少,可读性最高。这似乎也是 Qt 倾向于偏爱的文档和示例。

在查看要使用的迭代器时,请务必阅读可变 v 不可变。

QList<QProcess *> listOfProcesses;

// ...

foreach(Process * p, listOfProcesses)
{
    p->start();
}

顺便说一句,我可能会用 p 写一次,但在我提交或离开代码之前,我会用 Ctrl+Shift+R Qt Creator 并将 p 重命名为 process

希望对您有所帮助。

关于c++ - QProcess *p 行不是多余的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28917508/

相关文章:

c++ - Qwt moc 问题(找不到 moc.exe)

python - 在 C++ 中嵌入 Python (CPython API)

c++ - QProcess读取标准输出

c++ - 将 Ctrl+C 事件发送到在 Windows 上使用 QProcess 启动的进程

c++ - 句柄与智能指针。用什么?

c++ - 加载 OBJ 文件,如何使用法线 (#vertices < #normals)

c++ - 来自 QBitmap 的 QPixmap

qt - 使用QProcess开始一个过程

c++ - mingw 的 C++ 异常的奇怪问题

c++ - QML ComboBox 项 DropDownMenu 样式