我想爲類CLS定義一個構造函數。我想在我的構造函數的定義中包含不同的情況。例如,我希望構造函數在參數無效時工作: CLS :: CLS();在C++中,如何使構造函數具有不同類型的參數?
或者當參數是一個整數時, CLS :: CLS(int a);
我該怎麼做?
我想爲類CLS定義一個構造函數。我想在我的構造函數的定義中包含不同的情況。例如,我希望構造函數在參數無效時工作: CLS :: CLS();在C++中,如何使構造函數具有不同類型的參數?
或者當參數是一個整數時, CLS :: CLS(int a);
我該怎麼做?
在我看來,你的問題實際上過於籠統。
一般的答案是function overloading。
總之,你可以簡單地寫出兩個不同的函數(在這種情況下的方法)具有相同的名稱,但不同的參數。你可以爲每個人指定一個不同的身體。例如:
class CLS {
public:
CLS(int n) {
// do something
}
CLS(char c) {
// do something else
}
};
然後,你可以簡單地構造一個對象:
// ... somewhere
CLS object1(12); // 12 is a int, then the first 'ctor will be invoked
CLS object2('b'); // 'b' is a char, the second 'ctor will be invoked, instead.
A 「招進」 的答案,需要模板的使用。
總之,您可以編寫一個接受類型的泛型類型的構造函數作爲參數,並指定該類型遵循某些特徵時的行爲。當你可以「概括」(幾乎所有的機構)
class CLS {
public:
template<typename T>
CLS(T t) {
if (std::is_arithmetic<T>::value) {
// do something if the type is an arithmetic
} else {
// do something else
}
}
};
這種方法可能是有用的構造函數的行爲,以及你想要聚合不同類型的。
另一種方法是利用Default Arguments。例如
#include <iostream>
class example
{
public:
int val;
example(int in = 0): val(in)
{
}
};
int main()
{
example a(10);
example b;
std::cout << a.val << "," << b.val << std::endl;
}
將輸出
10,0
寫兩個構造 – StenSoft
您也可以利用[默認參數](http://en.cppreference.com/w/cpp/language/default_arguments) 。例如。 'CLS(int a = 0);' – user4581301
請在詢問Stack Overflow之前諮詢Google。您可能會因爲簡單的搜索找到答案而陷入低谷:https://www.google.com/webhp?sourceid=chrome-instant&rlz=1C1CHFX_enUS594US594&ion=1&espv=2&ie=UTF-8#q=c%2B%2B %20constructors%20with%20different%20arguments –