摘要:
看过C++对象模型的话就可以知道,在构造基类时,完整的vtable没有建立起来(表项没有被相应的子类函数替换),因而无法调用到子类的函数(即构造函数中的virtual函数是本类里的方法,不是virtual的)。书中也说即使调用了,因为构造函数的调用顺序,父类在构造时子类的成员还没有初始化可能,此时调... 阅读全文
摘要:
异常不怎么用,C++能自己控制析构过程,也就有这个要求了。容器不能完全析构其中的元素真是太危险了 阅读全文
摘要:
主要讲了,1. virtual析构函数的作用与调用顺序2. 使用时机,并不是使用了继承就要把基类的析构函数变为虚函数(virtual),只有当用于多态目的时才进行一个virtual析构函数的定义。3. 不要继承那些没有将析构函数定义为virtual的类来实现多态行为对于1:有些类继承可能只是一个组合... 阅读全文
摘要:
这节讲了下如何防止对象拷贝(隐藏并不能被其他人调用)两种方法:1. 将拷贝构造函数声明为private 并且声明函数但不进行定义#include #include class Dummy {public: Dummy(int d = 0) : data(d) {} Dummy* getC... 阅读全文
摘要:
主要讲了1. 一般情况下编译器会为类创建默认的构造函数,拷贝构造函数和copy assignment函数2. 执行默认的拷贝构造/copy assignment函数时,如果成员有自己的拷贝构造/copy assignment函数就执行它,否则就按bit拷贝/赋值3. 几种编译器不会为类生成默认的co... 阅读全文
摘要:
class Solution {public: int maxProduct(int A[], int n) { if (A == NULL || n res) { res = tr; } if (tr ... 阅读全文
摘要:
class Solution {public: string convertToTitle(int n) { if (n 0) { n--; res = (char)(n % 26 + 'A') + res; n ... 阅读全文
摘要:
class Solution {public: int maximumGap(vector &num) { int len = num.size(); int gap = 0; sort(num.begin(), num.end()); ... 阅读全文