关于QT的小问题
我才学QT和C++,读代码时有些地方不太明白1.比如一个classVideoLabeling:publicVideoSequence,为什么在public:里总有Vide...
我才学QT和C++,读代码时有些地方不太明白
1.比如一个class VideoLabeling: public VideoSequence,为什么在public:
里总有
VideoLabeling(MainWindow* parent);
VideoLabeling(const VideoLabeling& videoLabeling);
VideoLabeling& operator=(const VideoLabeling& videoLabeling);
~VideoLabeling(void);
类似这样的东西,他们是干什么的,特别是VideoLabeling& operator=(const VideoLabeling& videoLabeling);这个,VideoLabeling& operator是什么意思,VideoLabeling& videoLabeling又是什么意思,有人告诉我是表示引用, 声明形参是实参的一个引用,那么哪个是实参哪个是形参?
~VideoLabeling(void);这个经常见到,他到底有什么作用?
还有上面的那些列举的是函数么?为什么在开头没有类型,还是默认的?默认的是什么?
2.copyData这样的函数有什么用?比如
public:
OpticalFlowPara(){
m_IsActive=true;
m_alpha=0.02;
m_gamma=0.01;
m_eta=0.5;
m_regularization=membrane;
m_IsComputed=false;
}
OpticalFlowPara(const OpticalFlowPara& other){copyData(other);};
void copyData(const OpticalFlowPara& other){
m_IsActive=other.m_IsActive;
m_alpha=other.m_alpha;
m_gamma=other.m_gamma;
m_eta=other.m_eta;
m_regularization=other.m_regularization;
m_IsComputed=other.m_IsComputed;
}
是吧other里的东西复制到前面的变量里么?other不是新出来的么,前面都没出现过,为什么要这样做?到底有什么意义? 展开
1.比如一个class VideoLabeling: public VideoSequence,为什么在public:
里总有
VideoLabeling(MainWindow* parent);
VideoLabeling(const VideoLabeling& videoLabeling);
VideoLabeling& operator=(const VideoLabeling& videoLabeling);
~VideoLabeling(void);
类似这样的东西,他们是干什么的,特别是VideoLabeling& operator=(const VideoLabeling& videoLabeling);这个,VideoLabeling& operator是什么意思,VideoLabeling& videoLabeling又是什么意思,有人告诉我是表示引用, 声明形参是实参的一个引用,那么哪个是实参哪个是形参?
~VideoLabeling(void);这个经常见到,他到底有什么作用?
还有上面的那些列举的是函数么?为什么在开头没有类型,还是默认的?默认的是什么?
2.copyData这样的函数有什么用?比如
public:
OpticalFlowPara(){
m_IsActive=true;
m_alpha=0.02;
m_gamma=0.01;
m_eta=0.5;
m_regularization=membrane;
m_IsComputed=false;
}
OpticalFlowPara(const OpticalFlowPara& other){copyData(other);};
void copyData(const OpticalFlowPara& other){
m_IsActive=other.m_IsActive;
m_alpha=other.m_alpha;
m_gamma=other.m_gamma;
m_eta=other.m_eta;
m_regularization=other.m_regularization;
m_IsComputed=other.m_IsComputed;
}
是吧other里的东西复制到前面的变量里么?other不是新出来的么,前面都没出现过,为什么要这样做?到底有什么意义? 展开
2个回答
展开全部
1.
VideoLabeling(MainWindow* parent);
VideoLabeling(const VideoLabeling& videoLabeling);
这两个函数都是构造函数, 构造函数名字必需和类名一致, 没有返回值, 这些都是C++类的语法规定, 没什么原因...
VideoLabeling& operator=(const VideoLabeling& videoLabeling);
这个重载赋值符“=”, 对于简单的数据类型,比如 int a, b = 1; a=b, 可以直接利用=将b赋给a, 但当a, b是用户自定义的类型,比如a,b是两个类对象, 这是想把b赋给a, 就不能直接a=b这样了, 要想这样, 就得对=进行重载, 上面这个函数就是对=进行重载的, opeartor是重载函数的关键字, 函数返回值VideoLabeling&是引用, 从函数的参数const VideoLabeling& videoLabeling, 可以看出videoLabeling是对实参的一个引用, 至于实参, 比如有a=b(a,b都是对象), b就是实参, a=b实际的过程是a.operator(b)...
2.OpticalFlowPara(const OpticalFlowPara& other)这个是复制构造函数,
other是已经存在的对象, 然后用这个对象构造一个新的对象, copyDate()就是把类的数据成员从other对象一一赋给新的要生成的对象...
VideoLabeling(MainWindow* parent);
VideoLabeling(const VideoLabeling& videoLabeling);
这两个函数都是构造函数, 构造函数名字必需和类名一致, 没有返回值, 这些都是C++类的语法规定, 没什么原因...
VideoLabeling& operator=(const VideoLabeling& videoLabeling);
这个重载赋值符“=”, 对于简单的数据类型,比如 int a, b = 1; a=b, 可以直接利用=将b赋给a, 但当a, b是用户自定义的类型,比如a,b是两个类对象, 这是想把b赋给a, 就不能直接a=b这样了, 要想这样, 就得对=进行重载, 上面这个函数就是对=进行重载的, opeartor是重载函数的关键字, 函数返回值VideoLabeling&是引用, 从函数的参数const VideoLabeling& videoLabeling, 可以看出videoLabeling是对实参的一个引用, 至于实参, 比如有a=b(a,b都是对象), b就是实参, a=b实际的过程是a.operator(b)...
2.OpticalFlowPara(const OpticalFlowPara& other)这个是复制构造函数,
other是已经存在的对象, 然后用这个对象构造一个新的对象, copyDate()就是把类的数据成员从other对象一一赋给新的要生成的对象...
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询