嗨(英語不是我的第一語言,即使我犯錯誤,請理解我!謝謝!!)C++模板類,如何爲特定情況聲明覆制構造函數?
我正在寫一個可以包含指針的模板類。
template <typename T>
class SmartPtr {
private:
T value;
public:
SmartPtr() {};
~SmartPtr() {};
SmartPtr(T* a)
{
this->value = *a;
}
SmartPtr(SmartPtr* a)
{
this->value = a->get_Value();
}
SmartPtr(SmartPtr const* a)
{
this->value = a->get_Value();
}
T get_Value()const{
return this->value;
}
};
所謂的SmartPtr這是模板類,並
class Test
{
public:
Test() { std::cout << "Test::Test()" << std::endl; }
Test(Test const&) { std::cout << "Test::Test(Test const&)" << std::endl; }
~Test() { std::cout << "Test::~Test()" << std::endl; }
Test& operator=(Test const&)
{
std::cout << "Test& Test::operator=(Test const&)" << std::endl;
return *this;
}
void print() const { std::cout << "Test::print() const" << std::endl; }
void print() { std::cout << "Test::print()" << std::endl; }
};
這是我的測試類。
當我宣佈我的main.cpp
SmartPtr<Test> ptr_t1 = SmartPtr<Test>(new Test);
,
結果編譯後
Test::Test()
Test::Test()
Test& Test::operator=(Test const&)
Test::~Test()
但我想要得到的結果是
Test::Test()
Test::~Test()
是否有一個特定的模板類副本構造函數,我需要寫我在這種情況下?
非常感謝您的耐心等待!
看到這個問題,不太確定如果直接重複,但:https://stackoverflow.com/questions/926752/why-should-i-prefer-to-use-member-initialization-list – Rakete1111
'this-> value = * a;'是作業.... – StoryTeller
@StoryTeller感謝您的評論。對不起,我用C++已經有10天了,而且我缺乏知識。我不應該做任務? –