+ virtual ~SockAddr() { }
+
+ static SockAddr *create(const sockaddr &sa) { return create(reinterpret_cast<const sockaddr_storage &>(sa)); }
+ static SockAddr *create(const sockaddr_storage &);
+
+ virtual SockAddr *copy() const = 0;
+
+ virtual Family get_family() const = 0;
+ virtual std::string str() const = 0;