以下のサンプルコードに疑問があります。
friend std::ostream& operator<<(std::ostream& os, const ipv4& a)
の関数の処理についてです。
現在、a.dataには168,192,0,1が入っております。
この場合、os << static_cast<int>(a.data[0]) << '.'の処理は、a.data[0]を書き換えることになるのでしょうか?
それともdata[0]は「168.」が入るのでしょうか?
C++
1class ipv4 2{ 3 // 要素数が4のunsigned char型を確保 4 std::array<unsigned char, 4> data; 5public: 6 constexpr ipv4(unsigned char const a, unsigned char const b, 7 unsigned char const c, unsigned char const d) : 8 data{ {a,b,c,d} } {} 9 10 friend std::ostream& operator<<(std::ostream& os, const ipv4& a) 11 { 12 os << static_cast<int>(a.data[0]) << '.' 13 << static_cast<int>(a.data[1]) << '.' 14 << static_cast<int>(a.data[2]) << '.' 15 << static_cast<int>(a.data[3]); 16 return os; 17 } 18} 19int main() 20{ 21 ipv4 a(168, 192, 0, 1); 22 std::cout << a << std::endl; 23}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。