这篇文章主要讲解了“C++怎么让具体类型符合常规”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++怎么让具体类型符合常规”吧!
C.11:让具体类型符合常规
Reason(原因)
Regular types are easier to understand and reason about than types that are not regular (irregularities requires extra effort to understand and use).
常规类型和非常规类型相比更容易理解和推测。理解和使用不符合常规的类型需要额外努力才行。
Example(示例)
struct Bundle {
string name;
vector<Record> vr;
};
bool operator==(const Bundle& a, const Bundle& b)
{
return a.name == b.name && a.vr == b.vr;
}
Bundle b1 { "my bundle", {r1, r2, r3}};
Bundle b2 = b1;
if (!(b1 == b2)) error("impossible!");
b2.name = "the other bundle";
if (b1 == b2) error("No!");
In particular, if a concrete type has an assignment also give it an equals operator so that a = b implies a == b.
通常情况下,如果具体类型包含赋值操作,同时应提供判断相等的操作。也就是说有a=b意味着也有a==b。
Note(注意)
管理不允许克隆的资源,例如用于管理mutex的scoped_lock,由于经常在堆栈上分配,因此看起来像具体类型。但是这类类型的对象通常不能被拷贝(它们通常被移动),因此它们不属于常规的范畴,而是趋向于半常规。这样的类型经常被成为“只移动类型”。
感谢各位的阅读,以上就是“C++怎么让具体类型符合常规”的内容了,经过本文的学习后,相信大家对C++怎么让具体类型符合常规这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。