摘要:
注意,显式特化不是一个模板。如果是类型跟显式特化一样,那么不是实例化。 显式特化类的函数,不需要再加template,因为不是模板方法。 特化类的函数跟模板类不一定要一样,但是一样更好。 不支持局部特化函数,仅支持局部特化类。 局部特化,跟偏特化不同。 下面这个叫作局部特化: 原则:最具体的,限制性 阅读全文
posted @ 2017-02-28 22:14
blcblc
阅读(373)
评论(0)
推荐(0)
摘要:
查看这里: http://www.cplusplus.com/reference/iterator/back_inserter/ 是用来在最后插入的 注意,这个函数,是隐式特化了。 阅读全文
posted @ 2017-02-28 22:10
blcblc
阅读(179)
评论(0)
推荐(0)
摘要:
阅读全文
posted @ 2017-02-28 18:32
blcblc
阅读(147)
评论(0)
推荐(0)
摘要:
阅读全文
posted @ 2017-02-28 18:25
blcblc
阅读(281)
评论(0)
推荐(0)
摘要:
new包含两步,调用operator new申请空间,以及调用构造函数。 如果第一步结束之后,第二步发生异常,需要归还第一步的空间。 编译器帮我们做了这件事情,并且会调用对应的delete。 另外 new 会调用类定义的 operator new,而::new 会调用默认的operator new. 阅读全文
posted @ 2017-02-28 18:24
blcblc
阅读(260)
评论(0)
推荐(0)
摘要:
一般在new一个数组的时候,会先申请 unit * size + delta 大小的空间。delete的时候也要指定delete的是数组。 阅读全文
posted @ 2017-02-28 18:22
blcblc
阅读(156)
评论(0)
推荐(0)
摘要:
注意,我们无法改变new和delete操作符。 但是我们可以重载来里面的operator new 和 operator delete 方法,这个方法是被new操作符调用的,调用之后获得地址,会继续用构造函数初始化。 另有一种operator new的方法叫作placement new,被禁止替换,( 阅读全文
posted @ 2017-02-28 16:29
blcblc
阅读(247)
评论(0)
推荐(0)
摘要:
如果把拷贝构造函数和赋值函数都设成private private: ClassName(const ClassName & name); ClassName& operator=(const ClassName &name); 那么会出现下面的情况: 阅读全文
posted @ 2017-02-28 16:03
blcblc
阅读(174)
评论(0)
推荐(0)
摘要:
注意,构造函数不能是虚的,不然不会生效?(构造函数里面调用虚的函数,也不会生效)。 而虚构造函数,指的是通过一个虚函数,来调用clone方法,生成一个新的实例。而这个clone里面,一般调用的是拷贝构造函数。 return new ChildClass(*this); 返回 ChildClass* 阅读全文
posted @ 2017-02-28 15:37
blcblc
阅读(200)
评论(0)
推荐(0)
摘要:
把子类指针转为父类指针后,用==是能够相等的。因为编译器做了处理。 而如果同时两个父类,相互比较是不等的,因为彼此没有继承关系。是否可以用dynamic_cast来处理? 如果转为 void* 那么是不等的。因为丢失了类的信息。 阅读全文
posted @ 2017-02-28 15:27
blcblc
阅读(200)
评论(0)
推荐(0)
摘要:
在C++里面,dynamic_cast 通常用于横向转换,而不是向上或者向下的转换。 这个常常用于检查某个实例,是否实现了某个接口类,那么就把这个实例,用dynamic_cast来转换成这个接口类的实例。 如果成功,那就得到了调用方;如果不成功,会返回NULL. 一般不用引用来作为转换的接收方,因为 阅读全文
posted @ 2017-02-28 13:40
blcblc
阅读(211)
评论(0)
推荐(0)
摘要:
也就是会根据实参,所处在的名字空间,来查找对应名字空间里面的函数。 对于<<也是常见的场景,会根据实际要打印出来的下一个操作数,来决定调用哪个命名空间里面的函数。 注意,不同命名空间里面的函数,不构成重载的关系。它们只是在调用的时候,会被不同的选择而已。 对于操作符,比如%,同时存在成员函数和非成员 阅读全文
posted @ 2017-02-28 13:00
blcblc
阅读(193)
评论(0)
推荐(0)
摘要:
1. 找备选函数; 2. 找参数匹配的函数; 3. 检查权限,看是否private什么的。 也就是说,如果子类有一个private的函数,就不会去访问父类正常的函数。 另外,对于变量也是一样的,同名的变量,会导致不能访问父类正常的函数。 阅读全文
posted @ 2017-02-28 01:14
blcblc
阅读(166)
评论(0)
推荐(0)

浙公网安备 33010602011771号