#include <iostream> #include <list> #include <vector> #include <cstring> using namespace std; class B { public: B() { cout<<"B()"<<endl; } void print() { cout<<"print"<<endl; p = NULL; le…
#include <iostream> #include <vector> #include <string.h> using namespace std; class CTest { public: CTest() { cout << "CTest construct" << endl; data = ]; strncpy(data, ); } CTest(const CTest& test) { cout <…
c++,类的对象作为形参时一定会调用复制构造函数吗? 答:如果参数是引用传递,则不会调用任何构造函数:如果是按值传递,则调用复制构造函数,按参数的值构造一个临时对象,这个临时对象仅仅在函数执行是存在,函数执行结束之后调用析构函数. 如果类中没有定义复制构造函数 那对象就不能作为形参? 答:如果没有定义,编译器会自动为你定义一个,编译器自己定义的复制构造函数是按类成员变量的值复制的.有几个成员变量就重新创建一个对象,那个对象的成员变量和被复制的对象其成员变量的值相同.这里如果成员变量有指针的时候,…
该vector只能容纳标准库中string类, 直接上代码了,StrVec.h文件内容为: #ifndef STRVEC_H #define STRVEC_H #include<iostream> #include<string> #include<memory> using namespace std; class StrVec{ public: // 默认构造函数 StrVec():elements(nullptr),first_free(nullptr),cap(…
#include<iostream>#include<vector>#include<algorithm>using namespace std;typedef vector<int> vt;int main(){ int i; vt v1(10); //定义向量10个元素,注意每个元素初始化为了0 for (i = 0; i < 10; i++)  cout << v1[i] << " "; cout &l…
使用static_cast运算符将子类转换为父类即可 #include <iostream> using namespace std; class Base { public: Base(int p_n) : n(p_n) { } Base& operator=(const Base &base) { n = base.n; return *this; } friend ostream& operator<<(ostream &os, const B…
[1]为什么空类可以创建对象呢? 示例代码如下: #include <iostream> using namespace std; class Empty { }; void main() { Empty obj1; cout << sizeof(Empty) << endl; // 1 } 让我们先看看这个例子.既然都没有构造函数,怎么实现对象obj1的构建呢? 哦,经过大脑的回旋式搜索,忆得有一本书上说过,当用户定义一个空类(如上)时,编译器就会为这个类默认生成六个…
感谢:http://topic.csdn.net/t/20050429/20/3976956.html 感谢:http://yzyanchao.blogbus.com/logs/47796444.html 不过那边是转载自<effective stl>. std::vector很方便,但有时调用的函数的参数规定是数组,需要将vector转为数组,另外开辟一个空间,将vector一项项复制过去代价过大,可用下面的方法. 给定一个 vector<int>   v;         表达…
C++ STL中的vector的内存分配与释放http://www.cnblogs.com/biyeymyhjob/archive/2012/09/12/2674004.html 1.vector的内存增长 vector其中一个特点:内存空间只会增长,不会减小,援引C++ Primer:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储.设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间.拷贝元素.撤销旧空间,这样性能…
0 为什么需要hash_map 用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能.例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改: 岳不群-华山派掌门人,人称君子剑 张三丰-武当掌门人,太极拳创始人 东方不败-第一高手,葵花宝典 ... 这些信息如果保存下来并不复杂,但是找起来比较麻烦.例如我要找"张三丰"的信息,最傻的方法就是取得所有的记录,然后按照名字一个一个比较.如果要速度快,就需要把这些记录按照字母顺序排列,然后按照二分…