簡體   English   中英

C++ - 如何“填充”函數調用並使用參數的默認值

[英]C++ - How to "Fill" a function call and use a default values for arguments

假設第三方庫公開了一個類。 它的構造函數沒有默認參數,並且所有參數都是相同的類型。

class Something{
  public: 
    Something(int a, int b, int c, int d);
}; 

是否有任何語法允許使用每個參數的相同默認值來實例化該類?

例如:

Something s( sugar_stuff(42) ...) ; // <-> Something s(42,42,42,42);

謝謝,史蒂文

寫一個函數:

Something createSomething(int v) { 
    return {v,v,v,v};
}

PS:我想構造函數實際上是公共的而不是私有的。

class SomethingElse : public Something{
public:
    using Something::Something;
    SomethingElse (int a)
    : Something{a, a, a, a}
    {}
}; 

您可以嘗試創建一個調用原始函數的新函數:

void Something_new(int a = 42, int b = 42, int c = 42, int d = 42){
Something(a,b,c,d);
}
 

我最喜歡的是

class Something {
    int a = 0, b = a, c = b, d = c;
}

Something x0{};
Something x1{1};
Something x2{1, 2};
Something x3{1, 2, 3};
Something x4{1, 2, 3, 4};

如果您願意,也可以將所有內容初始化為a0而不是前一個成員。


https://godbolt.org/z/Yxj883zsr

x4:
        .long   1
        .long   2
        .long   3
        .long   4
x3:
        .long   1
        .long   2
        .long   3
        .long   3
x2:
        .long   1
        .long   2
        .long   2
        .long   2
x1:
        .long   1
        .long   1
        .long   1
        .long   1
x0:
        .zero   16

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM