【发布时间】:2016-01-17 15:34:49
【问题描述】:
如果我拿,两个这样的物体:
firstobject.h:
public slots:
void h_doSomething(int someint, std::vector<int> somevector, bool somebool); //(int)vector.size(): 80;
firstobject.cpp:
void firstobject::h_doSomething(int someint, std::vector<int> somevector, bool somebool)
{
emit anotherSignal(someint+4, somebool, somevector);
}
secondobject.h:
public signals:
void doSomething(int someint, std::vector<int> somevector, bool somebool); //(int)vector.size(): 80;
private:
std::vector< int > m_somevector;
secondobject.cpp:
void secondobject::basicFunction()
{
emit doSomething(51, m_somevector, true);
}
那些信号和槽是相连的,这些槽和信号的最佳优化是什么?
对于插槽,我想应该是:
void h_doSomething(const int &someint, const std::vector<int> &somevector, const bool &somebool) const;
但是对于我不知道的信号,我认为向量需要被复制,因为它是一个受保护的变量。
【问题讨论】:
-
见this。
-
您可以将向量作为 const ref 传递。在信号中,也是。 protected/private 与此无关(如果有,编译器会通过失败告诉你)。通过 const ref 将 POD 类型作为 int 和 bool 传递。不过没有任何意义。