使用文字复制初始化

时间:2016-05-26 15:24:45

标签: c++ constructor copy-constructor

我这样想:

String s1 = "hello";

发生了2个操作(例如,如所述here):( 1)使用字符串文字"hello"构建临时对象,然后(2)复制构造s1与临时对象。

但是,在运行以下代码时,我得到的唯一打印来自String的构造函数,而不是来自其复制构造函数。为什么呢?

static char *AllocAndCpy(const char *src_);

class String
{
public:
    String(const char *string_="");
    String(const String &other_);
private:
    char *m_str;
};

String::String(const char *string_): m_str(AllocAndCpy(string_))
{
    std::cout << "constructor" << std::endl;
}

String::String(const String &other_):m_str(other_.m_str)
{
    std::cout << "copy constructor" << std::endl;
}

static char *AllocAndCpy(const char *src_)
{
    size_t src_length = strlen(src_)+1;
    char *dest_ = new char[src_length]; 
    return (static_cast<char *>(memcpy(dest_, src_, src_length))); 
}

int main()
{
    String s1 = "hello";
    return 0;
}

0 个答案:

没有答案