10 2014 档案
摘要:#include using namespace std; int main() { int a[3] = {1, 2, 3}; cout << *(a) << std::endl; cout << *(a+ 1) << std::endl; cout << *(...
阅读全文
摘要:#include using namespace std; int main() { char a[2];//就是变量的地址 printf("%x", (int)&a[0]); void * p = a;//对于指针显示的就是p存放的地址值,而不是p的地址 pri...
阅读全文
摘要:#include void fun1(int*& p)//引用p等于就是传过来的p,引用改变了p也就改变了{ p = new int; *p = 90;}void fun2(int** p)//直接将指针的地址传过来,直接通过指针的地址操作指针{ *p = new int; ...
阅读全文
摘要:今天找了半天delete错误,后来才知道是MTd和MDd模式的问题,MTd的内存申请和释放必须在同一个模块里面,接口上面不能使用stl等,MDd可以使用。改成MDd就可以了
阅读全文
摘要:Multithreaded Libraries PerformanceThe single-threaded CRT is no longer ( in vs2005 ) available. This topic discusses how to get the maximum performan...
阅读全文
摘要:所谓接口继承,就是派生类只继承函数的接口,也就是声明;而实现继承,就是派生类同时继承函数的接口和实现。我们都很清楚C++中有几个基本的概念,虚函数、纯虚函数、非虚函数。虚函数:虚函数是指一个类中你希望重载的成员函数,当你用一个基类指针或引用指向一个继承类对象的时候,你调用一个虚函数,实际调用的是继承...
阅读全文
摘要:1.什么是继承A继承B,说明A是B的一种,并且B的所有行为对A都有意义eg:A=WOMAN B=HUMANA=鸵鸟 B=鸟 (不行),因为鸟会飞,但是鸵鸟不会。2.什么是组合若在逻辑上A是B的“一部分”(a part of),则不允许B从A派生,而是要用A和其它东西组合出B。例如眼(Eye)、鼻(N...
阅读全文
摘要:如果一个系统包含高精度性能计数器(HRPC,high-resolution performance counter)则此系统提供高精度定时器。你可以使用API函数QueryPerformanceFrequency来获得HRPC的频率HRPCF,返回值为cps(counts per second)。这...
阅读全文
摘要:#include struct I_Pro{ virtual void fun() = 0;};class A : public I_Pro{public: virtual void fun();};void A::fun(){ std::cout createPro(); ...
阅读全文
摘要:#include struct I_Pro{ virtual void fun() = 0;};class A : public I_Pro{public: virtual void fun();};void A::fun(){ std::cout createPro(2); ...
阅读全文
摘要:静下心来提升自己。我之所以火的纠结是因为既想得到别人的认可,又无法静下心来提升自己
阅读全文
摘要:程序设计的三种典范(c++对象模型)1.程序模型就像c中那也的str*系列的函数如:char boy[] = "wcfsf";char p = new char[strlen(boy) + 1];strcpy(p, boy);感觉这个就是在函数内部实现的,没有什么封装的概念2.抽象数据类型(ADT)...
阅读全文
摘要:不同类型的指针int *pvoid *pZooAnimal* p这个问题由来已久,各种类型的指针,内存中只是一个4个字节存储的地址,那怎么区分呢主要是其寻址出来的object类型不同,指针类型会教导编译器如何解释某一个特定地址中的内容和大小,我突然想到了汇编中哪些寻址,这个指针的寻址和那个肯定有关系...
阅读全文
摘要://这个例子让我想起了mongo如何突破32的限制#include class stumble{public:protected:private: //对于class一样的访问权限的数据成员是放在一起的,但不同的权限不是一样的 char pc[1];//好像protected放在priv...
阅读全文
摘要:覆盖与重写可以说是一样的,但与重载不同。override(重写)是指在不同作用域中,多个函数原型完全一样,而实现却不同的函数。在C++中,经常发生在类的继承中。当基类中的某个方法是virtual或pure virtual函数时(当然访问权限必须是public或protected,因为从C++设计思想...
阅读全文
摘要:在C++中,什么叫做钻石问题(也可以叫菱形继承问题),怎么避免它?下面的图表可以用来解释钻石问题。假设我们有类B和类C,它们都继承了相同的类A。另外我们还有类D,类D通过多重继承机制继承了类B和类C。因为上述图表的形状类似于钻石(或者菱形),因此这个问题被形象地称为钻石问题(菱形继承问题)。现在,我...
阅读全文
摘要:虚继承(个人感觉用到的地方不多,项目中没有用到这个的)最典型的例子就是iostream的继承方式class istream : virtual public ios{...};//此处就是虚继承,指定ios为虚基类class ostream : virtual public ios{...};cla...
阅读全文
摘要:/*对于此类的模型为:class object{ float _x;//类的nonstatic成员函数 _vptr_Point;//指向虚函数表的指针}virtual table//虚函数表的信息(应该存放的是一些指针)slot1---type info for Point(用于支持RT...
阅读全文
摘要:虚函数为了重载和多态的需要,在基类中是有定义的,即便定义是空,所以子类中可以重写也可以不写基类中的此函数!纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!虚函数引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。class Cman{public:virtu...
阅读全文
摘要:形式1:返回类型(*函数名)(参数表) [cpp] view plaincopychar (*pFun)(int); char glFun(int a){ return;} void main() { pFun = glFun; (*pFun)(2); } ...
阅读全文
摘要:类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。所以 const 关键字对成员函数的行为作了更加明确的限定:...
阅读全文