我想了解如何顯式構造函數調用主要使用下面的代碼工程。顯式使用main中的構造函數調用作爲函數調用參數
#include<iostream>
using namespace std;
class Dependency1
{
bool init;
public:
Dependency1() : init(true) {
std::cout << "Dependency1 construction"
<< std::endl;
}
void print() const {
std::cout << "Dependency1 init: "
<< init << std::endl;
}
};
class Dependency2 {
Dependency1 d1;
public:
Dependency2(const Dependency1& dep1): d1(dep1){
std::cout << "Dependency2 construction ";
print();
}
void print() const { d1.print(); }
};
void test(const Dependency1& dd1)
{
cout << " inside Test \n";
dd1.print();
}
int main()
{
test(Dependency1());
Dependency2 D1(Dependency1()); // this line does not work
return 0;
}
功能測試正在被呼叫,其中構造依賴關係1()被用作一個函數調用,而不是依賴關係1 ::依賴關係1()和代碼運行完全正常。
現在,如果我用類似的概念創造Dependency2的對象D1,這是行不通的。 似乎我在這裏做錯了錯誤的理解。
需要知道編譯器如何解析依賴關係1()在主通話,即使不使用範圍解析和它爲什麼當我使用它作爲Dependency2
謝謝, 的構造函數的參數不工作阿南德
+1簡單易懂,易於理解。 – 2010-12-24 05:28:13
謝謝,但是爲什麼當我使用類似的東西來創建Dependency2對象時它不起作用。 – Anand 2010-12-24 05:30:26
@Anand:看看我的答案。 – 2010-12-24 05:40:10