本帖最后由 wangpaishi 于 2021-3-17 09:29 编辑
我是菜鸟,借你代码温习一下C++,好多年不弄了,尽弄C#,HTML,JS,PHP,Android JAVA了[C++] 纯文本查看 复制代码 #include <iostream>
using namespace std;
class Integer
{
public:
Integer();
Integer(int value);
Integer(string strName);
Integer(string strName, int value);
void SetName(string strName);
string GetName();
// 声明重载"+"运算符
Integer operator+(const Integer& another);
int Value() { return m_nValue; }
private:
int m_nValue;
string m_strName;
};
Integer::Integer()
:Integer("")
{
}
Integer::Integer(string strName)
:m_strName(strName), m_nValue(0)
{
cout << "构造: 我是 "<< this->m_strName <<endl;
}
Integer::Integer(int value)
:Integer("NoName", value)
{
}
Integer::Integer(string strName, int value)
:m_strName(strName), m_nValue(value)
{
cout << "构造: 我是 "<< this->m_strName <<endl;
}
void Integer::SetName(string strName)
{
this->m_strName = strName;
}
string Integer::GetName()
{
return this->m_strName;
}
/*实现运算符重载的方法*/
Integer Integer::operator+(const Integer& another)
{
cout << "正在进行 + 运算: 我是 "<< this->m_strName << ",另一个是 " << another.m_strName <<endl;
return Integer(this->m_nValue + another.m_nValue);
}
int main()
{
Integer aa("aa", 100), bb("bb", 200), cc("cc");
//aa.SetName("aa");
//bb.SetName("bb");
//cc.SetName("cc");
cc = aa + bb;
cout << "结果:"<< cc.GetName() << "=" << cc.Value() <<endl;
return 0;
}
运行结果
[C++] 纯文本查看 复制代码
构造: 我是 aa
构造: 我是 bb
构造: 我是 cc
正在进行 + 运算: 我是 aa,另一个是 bb
构造: 我是 NoName
结果:NoName=300
这里的变量我们可以看作是创建Integer类对象并调用Integer类构造函数实例化了 aa,bb,cc,即形参构造函数Integer(int value)和默认构造函数Integer();相当于把100,200,默认(0)这个数值赋给了Integer类实例对象内的私有数据成员m_nValue
cc= aa + bb; // 这里面的右侧加我们其实可以看作成是调用了aa的+函数,传入参数是bb,通过运算结果可以看出cc变量在求和赋值后已经是新构建的对象了 |