本人不是很懂c++,只是平时仿真的时候,用一点,对于其一些约定就不是很熟,于是今天就栽在一个bug上了。
示例代码如下:
#include <iostream>
using namespace std;
class Sender{
public:
Sender(uint32_t number){
Sender(number,1000);
}
Sender(uint32_t number,uint32_t mtu){
m_number=number;
m_mtu=mtu;
}
void Print(){
std::cout<<m_number<<std::endl;
}
private:
uint32_t m_number;
uint32_t m_mtu;
};
int main(){
Sender sender(10);
sender.Print();
return 0;
}
执行程序,Print函数输出的是一个很大垃圾数值。问题就是就出在析构代码,Sender(number,1000);调用完事之后,直接被析构了。
Sender(uint32_t number){
Sender(number,1000);
}
修改的做法:
class Sender{
public:
Sender(uint32_t number):Sender(number,1000){
}
Sender(uint32_t number,uint32_t mtu){
m_number=number;
m_mtu=mtu;
}
void Print(){
std::cout<<m_number<<std::endl;
}
private:
uint32_t m_number;
uint32_t m_mtu;
};