C++相关
结构体2
结构体与函数: 结构体可以在定义时在其中添加相应函数。
结构体:捆绑数据。c++结构体,可以放函数。结构体定义出来对象,可以拥有一些行为。
同时需要注意区分默认构造函数和带参构造函数。
struct SData
{
//写在结构体里面,跟结构体同名的函数
//没有参数,默认构造函数。一般用于对结构体对象的每个属性置零置空。
SData()
{
nRow = 0;
nCol = 0;
nRowBk = 0;
nColBk = 0;
}
//让构造函数有参数,利用参数对结构体的属性进行初始化
SData(int nInRow, int nInCol)
{
nRow = nInRow;
nCol = nInCol;
nRowBk = nInRow;
nColBk = nInCol;
}
//成员函数: 行为,方法。
void onBackUp()
{
nRowBk = nRow;
nColBk = nCol;
}
//成员变量,属性。
int nRow;
int nCol;
int nRowBk;
int nColBk;
}
int main()
{
//调用默认构造函数
SData data;
//显示调用重载构造函数。
SData player = SData(5,5);
//调用结构体中函数
player.OnBackUp();
}
重载运算符函数: 在结构体中的函数,对运算符进行重定义,以实现结构体之间的直接运算操作。
struct SData
{
//重载运算符。
bool operator==(SData data)
{
return nRow == data.nRow && nCol == data.nCol;
}
SData operator+(SData data)
{
SData temp;
temp.nRow = data.nRow + nRow;
temp.nCol = data.nCol + nCol;
return temp;
}
//成员变量,属性。
int nRow;
int nCol;
int nRowBk;
int nColBk;
}
int main()
{
SData data1 = SData(5, 5);
SData data2 = SData(5, 5);
if (data1 == data2) //运用重载运算符直接比较是否相等
{
cout << "相等" << endl;
}
SData data3 = data1 + data2; //运用重载运算符直接实现相加
}
结构体与结构体: 结构体可以嵌套结构体,同时也可以使用嵌套结构体中的函数。
struct SData
{
//写在结构体里面,跟结构体同名的函数
//没有参数,默认构造函数。 一般用于对结构体对象的每个属性置零置空。
SData()
{
nRow = 0;
nCol = 0;
nRowBk = 0;
nColBk = 0;
}
//让构造函数有参数,利用参数对结构体的属性进行初始化
SData(int nInRow, int nInCol)
{
nRow = nInRow;
nCol = nInCol;
nRowBk = nInRow;
nColBk = nInCol;
}
//成员变量,属性。
int nRow;
int nCol;
int nRowBk;
int nColBk;
};
//结构体里面可以放另一个结构体的对象。
struct SPlayer
{
SPlayer()
{
}
SPlayer(int nRow, int nCol)
{
arrData[0] = SData(nRow, nCol);
arrData[1] = SData(nRow, nCol);
arrData[2] = SData(nRow, nCol);
arrData[3] = SData(nRow, nCol);
}
//玩家里面要有坐标,SData构成的对象。
SData arrData[4];
};
int main()
{
SPlayer player = SPlayer(5,5);//定义嵌套结构体
}