我在使用 GCC 的 C++ 类构造函数方面遇到了麻烦。
下面的“foo”类应该模拟像 AL、AH、AX、EAX 等处理器寄存器,我需要一些与该类相关的基本算术。但我在初始化或“foo”对象中有一个奇怪的行为。
对于以下两种情况,我没有相同的结果:
富 w=0x12345678; // 情况1 富 w ; // 案例 2 初始化(2 步) w=0x12345678;
对我来说,案例 2 正在工作 GCC 调用 foo() (构造函数 1)然后是 = 运算符。最后, w.m_val 是可以的但对于案例 1 GCC 直接调用 foo(long *) (构造函数 2),仅此而已。显然这不是我所期待的。
如果 "foo" 位于 char 、 int 或 long 位置,则两种情况的结果都是相同的。
我可能对构造函数有误解或做错了什么。有人可以帮助我吗?
谢谢。
类 foo { 上市: foo(){ // 构造函数 1 m_val=0; m_ptr=NULL; }; foo(long *p){ // 构造函数 2,永远不应该被调用!!! m_val=0; m_ptr=p; }; 朋友 foo 运算符+( const foo &rhs, const unsigned int v ); foo &operator+= (unsigned int v) { m_val+=v; 返回*这个; } ~foo(){}; foo &operator= ( const foo &rhs ) { m_val=rhs.m_val; 返回*这个; }; foo &operator= ( const unsigned int v ) { m_val=v; 返回*这个; }; 私人的: 无符号整数 m_val; 长 *m_ptr; };