QProcess *p 行不是多余的吗?
Isn't the line QProcess *p redundant?
我偶然发现了这个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
}
它对于代码可移植性或匹配示例时很有用。 假设您找到一个使用 100 行QProcess * p
的示例,然后将其应用于流程向量,当您在每个位置将p
换成(*iter)
时,可读性会受到影响......但是,如果在局部范围的顶部分配具有相同名称的变量,则可以获得可读性/可维护性。
此外,Qt支持多种类型的迭代器,STL风格,Java风格和boost foreach
风格。 我更喜欢foreach
风格,它本身就是最少的代码和最高的可读性。 这似乎也是Qt的文档和示例所偏爱的。
当您查看要使用的迭代器时,请务必阅读有关可变与不可变的信息。
QList<QProcess *> listOfProcesses;
// ...
foreach(Process * p, listOfProcesses)
{
p->start();
}
附带说明一下,我可能会用p
写一次,但在我提交或离开代码之前,我会在Qt Creator中Ctrl+Shift+R
并将p
重命名为process
。
希望有帮助。
相关文章:
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- 使用QProcess执行命令,并将结果存储在QStringList中
- 终止 QProcess 不会终止子进程
- 在 Qt(C++) 中使用 QProcess 解压缩 - 提取目录问题
- 当QProcess需要用户使用Qt输入时,如何阅读
- 为什么在C++使用常量函数时常量是多余的?
- 如何在 Qt5 中执行多个 QProcess
- Q维德格特关闭事件(..)未使用 QProcess::terminate() 调用
- 如何在 Linux 下执行 shell 命令 unsing QProcess?
- 当进程结束时,如何保持由 QProcess 执行的命令?
- QProcess无法通过QPushButton执行终端线路命令
- QProcess::readAllStandardOutput() 和换行符
- 使用 QProcess 将命令发送到服务器
- 使用qprocess将参数传递给批处理
- 无法使用QProcess在cmd.exe中执行复制命令
- QProcess不启动java应用程序
- Qt - 如何将"more"数据写入QProcess?
- 运行自定义可执行文件,QProcess 立即退出,退出代码为 1
- 如何使用 QProcess 设置参数以运行类文件?
- QProcess *p 行不是多余的吗?