
C++
乐乐wll
这个作者很懒,什么都没留下…
展开
-
c++中new/delete与new[]/delete[]
1.new,delete不是函数而是C++中的关键字2.new与malloc的区别:malloc只申请内存空间,而不进行初始化new可以进行初始化:string *a = new string("hello");3.operator new 与operator delete,operator new[]与operator delete[]:他们都是c++的库函数,使用new/delete与 ...原创 2018-11-07 20:32:26 · 196 阅读 · 0 评论 -
构造函数
1.初始化列表:(1).构造函数在初始化列表中进行初始化过程,在函数体中进行赋值过程。所以在进入构造函数体之前对象的所有成员变量(对于内置类型是否如此,我不太清楚)都已完成初始化过程(2).对于内置类型如int,float等,在初始化列表中进行初始化和在构造函数体中进行赋值差别不大(3).对于类类型,如果没有在初始化列表中进行初始化,则调用默认构造函数,如无默认构造函数,可能无法执行。(...原创 2018-11-07 20:32:07 · 121 阅读 · 0 评论 -
explicit关键字
当构造函数只有一个参数或有n个参数,但有n-1个参数有默认值时class A{ public: A(int a, int b = 10) x(a),y(b){} private: int x; int y;};A a(1);//定义一个对象aA a = 1;//虽然有点莫名其妙,但在编译器看来这合法的,编译器会用1来建立一个A类对象,等效于A a(1);或A b(1)...原创 2018-11-09 14:28:56 · 157 阅读 · 0 评论 -
C++自定义迭代器(STL)
一.iterator_traits #include template <class Iterator>struct iterator_traits{ typedef typename Iterator::difference_type differebce_type; typedef typename Iterator::value_type value_原创 2018-11-08 16:16:19 · 1680 阅读 · 0 评论 -
class与typename区别
1.一般情况下,在声明一个模板类型参数是,class与typename一样2.当类型为嵌套依赖类型时,在类型名前加typename,如:typename std::iterator_traits(Iterator)::value_type t;这里std::iterator_traits(Iterator)::value_type是一个嵌套依赖类型,所以要在前面加typename(不加ty...原创 2018-11-08 20:28:22 · 2142 阅读 · 0 评论