我一直在努力通過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