C/C++教程

Effective C++ 条款18:让接口容易被正确使用

本文主要是介绍Effective C++ 条款18:让接口容易被正确使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

接口需要传什么参数

例如一个日期类

class Date {
 public:
  Date(int month, int day, int year);
};

年月日是三个必要数据,不同国家年月日的排列不同。所以这个是有歧义的。解决方法是设计年月日三个类,并且不让隐式转型。

class Month{
 public:
  explicit Month(int m): value(m){}
 private:
  int value;
};
class Day{
 public:
  explicit Day(int d): value(d){}
 private:
  int value;
};
class Year{
 public:
  explicit Year(int y): value(y){}
 private:
  int value;
};

这样虽然可以确定年月日了,但是月和日没有限定,一年只能有12月。可以用下面的方法,让类提供静态方法创建对象。而不让用户自己创建。

class Month {
 public:
  static Month Jan() {return Month(1);}
 private:
  explicit Month(int m);
};

后面还提了很多老生常谈的问题。比如什么接口要求用户必须记得做某些事,就是有着不正确使用倾向之类的。

这篇关于Effective C++ 条款18:让接口容易被正确使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!