模版和string

模版和string
可以将operator new单独使用p1调构造函数 p2不调构造函数不允许直接调用以上代码相当于将new delete各自的两个原理分开实现typename是用来定义模板参数关键字,模板参数为T1,根据模板生成具体函数如上图推导实例化是进行显示类型转换显示实例化是先根据函数后尖括号内的类型确定了函数模板中T的类型然后实参会自己进行隐式类型转换然后传实参。当如下时这里必须显示实例化显示告诉T的类型是什么如下当模板名与函数名相同时优先执行函数类模板会在模板内用模板参数T1...类模板进行声明和定义分离类内声明类外定义若如之前类一样如下图。因为定义的模板参数templateclass T只能给当前的类模板或函数模板使用所以如下图一样出了类模板T就不能用了。必须再次声明与类模板相同的模板参数templateclass T在类域Stack后加参数函数代码永远是在编译期生成的运行期创建对象时不会生成任何代码。创建对象只是在内存中分配空间存储成员变量所有对象共享同一份函数代码。字符串类是basic_string类模板的实例化使用char即字节作为字符类型typedef basic_stringchar string 重命名了、7先不讲string拷贝构造析构string底层是动态开辟的数组会自己调用已讲完赋值重载string底层是字符顺序表字符数组所以重载[ ]有意义string重载了[ ]对象可以通过调用[ ]函数实现获取修改对象中具体哪个字符。越界时可以快速检查。可以将该函数内联以减少调用代价