c++ - 具有默认值的构造函数和不同的构造函数

标签 c++ constructor

我想做这样的事情

class foo{
private:
    double a,b;

public:
    foo(double a=1, double b=2){
        this.a=a;
        this.b=b;
    }
}

int main(){
    foo first(a=1);
    foo first(b=2);
}

这样的事情是可能的还是我需要创建两个新的构造函数?

第二个问题来了:这两个构造函数有什么区别:

class foo{
private:
    int a;

public:
    foo(int in):a(in){}
}

class foo{
private:
    int a;

public:
    foo(int in){a=in}
}

最佳答案

foo first(a=1);
foo first(b=2);

你不能在 C++ 中真正拥有它。它曾经被考虑标准化,但后来被放弃了。 Boost.Parameter 尽其所能来近似命名参数,请参阅 http://www.boost.org/doc/libs/1_47_0/libs/parameter/doc/html/index.html

foo(int in):a(in){}
foo(int in){a=in}

第一个构造函数正在初始化 a,而第二个构造函数正在为其赋值。对于这种特殊情况 (int) 没有太大区别。

关于c++ - 具有默认值的构造函数和不同的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7410237/

相关文章:

javascript - 为什么我们要使用构造函数的原型(prototype)属性来添加方法?

java - 在构造函数中设置父子关系而不泄漏 "this"变量

c++ - boost::filesystem::space() 报告错误的磁盘空间

c++ - (c++) STL vector 的 STL vector

c++ - 使用 write_graphviz() 打印一个 constified 子图

java - 如何在类中正确实例化一个公共(public)类+数据结构以便其他对象可以使用它?

c++ - 在 C++ 中以 "N"距离生成整数范围内的 "logarithmic"数字集

c++ - C/C++ 打包和压缩

c++ - C++中调用析构函数和构造函数的顺序是什么

java - 实例变量的构造函数初始化