美文网首页
C++ STL容器与对象的拷贝

C++ STL容器与对象的拷贝

作者: 狗子孙 | 来源:发表于2018-09-16 17:44 被阅读102次

STL中有很多容器,当把某个类的实例存入容器时,其实是调用了相应的拷贝构造函数。
对于map这样的关系容器,如果key不存在,map调用构造函数。参考下面代码:

#include <iostream>
#include <vector>
#include <map>
using namespace std;
class Test {
public:
    Test() {
        cout << "调用构造函数" << endl;
    }
    Test(const Test& t) {
        cout << "调用拷贝构造函数" << endl;
    }
    ~Test() {
        cout << "调用析构函数" << endl;
    }
};
int main(void) {
    cout << "------------------" << endl;
    vector<Test> tests;
    tests.push_back(*(new Test()));
    cout << "------------------" << endl;
    cout << "------------------" << endl;
    map<int, Test> testsMap;
    testsMap[1] = *(new Test());
    cout << "------------------" << endl;
    return 0;
}

相关文章

  • C++ STL容器与对象的拷贝

    STL中有很多容器,当把某个类的实例存入容器时,其实是调用了相应的拷贝构造函数。对于map这样的关系容器,如果ke...

  • [C++] STL 容器

    参考:[C++] STL 容器 (一) - 基本介紹[C++] STL 容器 (二) - Iterator 部分示例:

  • c++值语义、引用语义

    值语义:对象的拷贝与原对象无关,c++中将基础类型都定义为值语义,c++规定凡是能够放入标准容器内的类型必须具有值...

  • 浅析STL allocator

    STL allocator是做什么用? 在学习STL中containers会发现C++ STL里定义了很多的容器(...

  • C++ STL(1)

    C++ STL(1) from my csdn blog C++标准模板库 容器C++标准模板库提供了10种容器基...

  • 深拷贝和浅拷贝不同

    浅拷贝:指针(地址)拷贝,不会产生新对象深拷贝:内容拷贝,会产生新对象 非容器类对象的深拷贝、浅拷贝 非容器类对象...

  • c++ STL

    一.STL: standard template library(C++标准模板库) STL共有六大组件:容器、算...

  • C++ STL 之 vectot(三)

    今天我们继续更新 C++ STL 中 vector 容器的使用 vector 容器增加元素 vector 容器增加...

  • STL与泛型编程 第一周 博览网

    重要的C++参考网站:cplusplus.com CppReference STL六大容器 容器containe...

  • C++ STL 之 vectot(四)

    今天我们继续更新 C++ STL 中 vector 容器的使用 vector 容器删除元素 使用 clear() ...

网友评论

      本文标题:C++ STL容器与对象的拷贝

      本文链接:https://www.haomeiwen.com/subject/dmdfnftx.html