本人不是很懂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;
};
[1]c++构造函数中调用构造函数
最后
以上就是秀丽大炮最近收集整理的关于c++构造函数中调用构造函数的全部内容,更多相关c++构造函数中调用构造函数内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复