摘要:一、Template1、class expression templates将在编译时期而非执行时期被评估,因而带来重大的效率提升。2、当编译器看到template class声明时,在实际程序中,什么反应也没有。template class中的任何member,只能通过template class...
阅读全文
摘要:一、对象的构造和析构1、如果一个区段或函数中有一个以上的离开点,destructor必须被放在每一个离开点之前。2、一般而言object应尽可能放在使用它的那个程序区附近,这样做可以节省不必要的对象产生和销毁操作。3、C++程序中所有的global objects都被放置在程序的data segme...
阅读全文
摘要:1、 一般而言,class的data member应该被初始化,而且只在constructor中或其它member functions中初始化,其它任何操作都将破坏其封装性质,使其维护和修改更加困难。2、 可以定义并调用一个pure virtualfunction,但它只能被静态调用,不能经由虚拟机...
阅读全文
摘要:一、Default Construct的构造操作1、C++ Standard说:对于一个类,如果没有用户定义的构造函数,那么会有一个默认构造函数被隐式声明出来,但这个构造函数是trivial constructor(没啥用的)。2、以下4种情况编译器会合成nontrivial default con...
阅读全文
摘要:#includeusing namespace std;struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} };struct TreeNode { int val;...
阅读全文
摘要:在c++中,有两种数据成员:static和nonstatic,三种成员函数:static、nonstatic和virtual。c++对象模型:nonstatic data members被置于类对象之内,而staticdata members被置于类对象之外。static和nonstaticfunc...
阅读全文
摘要:C++中的虚函数(Virtual Function)的实现通过一张虚函数表来实现的,简称为V-Table。在这个表中,主要是一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其真实反应实际的函数。这样,在有虚函数的类的实例中分配了指向这个表的指针的内存,所以,当用父类的指针来操作一个子类的时...
阅读全文
摘要:1、 C++支持三种类型的member functions,static、nonstatic和virtual,每一种类型被调用的方式都不相同。2、C++的设计准则之一便是nonstatic member function至少必须和一般的nonmember function有相同的效率。编译器内部会将...
阅读全文
摘要:1、例子,用VS 2013编译器#includeusing namespace std;class X{};class Y :public virtual X{};class Z :public virtual X{};class A :public Y, public Z{};int main()...
阅读全文
摘要:#include#include#includeusing namespace std;struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}};class Solution {public...
阅读全文
摘要:1、 C++在布局和存取时间上的主要的额外负担是由virtual引起的,包括:1)virtualfunction机制,用以支持一个有效率的“执行期绑定”2)virtualbase class,用以实现“多次出现在继承体系中的baseclass,有一个单一而被共享的实例”;3)多重继承下的额外负担,发...
阅读全文