|
在看 Imperfect C++ ,
第一章说的是约束,契约。
想知道在实际的C++编程中,会不会用到这样的办法来控制程序员的行为
(能过编译器来把关,而不仅仅在文档里写出要求由程序员自觉遵守):
比如,要求两个类的size相等
- template < typename T1 , typename T2 >
- struct must_be_same_size{
- ~must_be_same_size(){
- //强制让编译器检查,但constrains函数不会被调用。
- void(*p)()=constrains;
- }
- private:
- void static constrains(){
- const int T1_not_same_size_as_T2= ( sizeof(T1)==sizeof(T2) );
- int i[ T1_not_same_size_as_T2 ];//如果T1_not_same_size_as_T2为0则出现编译错误。从而实现约束
- }
- }
复制代码 |
评分
-
1
查看全部评分
-
|