Poo*_*ria 3 c++ constructor initialization ambiguity named-constructor
采用以下类和两个对象定义:
class Rect{
public:
enum centimeter;
enum meter;
Rect(double len,double wid,enum centimeter){
length=(len/100);
width=(wid/100);
}
Rect(int len,int wid,enum meter){
length=len;
width=wid;
}
//rest of implementation
private:
double length;//in meters
double width;//in meters
};
Rect obj1(10,5,Rect::centimeter());
Rect obj2(10,5,Rect::meter());
Run Code Online (Sandbox Code Playgroud)
两个先前的构造函数具有伪枚举参数,以解决在这些伪参数不存在的情况下引起的调用歧义.现在尽管有可能在这里使用命名构造函数,如果我坚持使用这些虚拟参数,这是否违反了我应该注意的任何编码规则?
Joh*_*itb 10
我认为这违反了我的口味.我会像这样编码:
enum Unit {
Centimeter = 100,
Meter = 1
};
Rect(int len, int wid, Unit unit) {
length = len / (int) unit;
width = wid / (int) unit;
}
Rect obj1(10, 5, Rect::Centimeter);
Rect obj2(10, 5, Rect::Meter);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1147 次 |
最近记录: |