我一直在努力通过C++。我正在努力让我的脑袋围绕成员初始化,特别是一行代码。考虑下面的程序;努力理解'会员初始化'
#include <iostream>
#include <cstdint>
class RGBA
{
private:
uint8_t m_red = 0;
uint8_t m_green = 0;
uint8_t m_blue = 0;
uint8_t m_alpha = 255;
public:
***RGBA(uint8_t red, uint8_t green, uint8_t blue, uint8_t alpha = 255):
m_red(red), m_green(green), m_blue(blue), m_alpha(alpha)***
{
}
void print()
{
std::cout << "r = " << static_cast<int>(m_red) << " g = " << static_cast<int>(m_green) << " b = " << static_cast<int>(m_blue) << " a = " << static_cast<int>(m_alpha) << '\n';
}
};
我已经加粗的我有问题的代码行(在“公共”我的问题首次声明,为什么我必须声明阿尔法是255的时候我没有要申报红,绿或蓝为0,而我必须声明它们都在私人部分。
可能有人请解释这个给我,甚至更好地解释成员初始化的这个概念。谢谢你,任何的帮助深表感谢。
int main()
{
RGBA teal(0, 127, 127);
teal.print();
return 0;
}
'255'是'alpha'的默认参数,所以每次你想要一个完全不透明的颜色时,你不必做'RGBA(R,G,B,255)'。你可以做'RGBA(R,G,B)'。 – LogicStuff