随笔分类 - c++
摘要:#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)。这...
阅读全文
摘要:覆盖与重写可以说是一样的,但与重载不同。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...
阅读全文
摘要:虚函数为了重载和多态的需要,在基类中是有定义的,即便定义是空,所以子类中可以重写也可以不写基类中的此函数!纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像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 关键字对成员函数的行为作了更加明确的限定:...
阅读全文
摘要://#define ALLOC_CONSOLE#ifdef ALLOC_CONSOLE AllocConsole(); // 开辟控制台 释放:FreeConsole(); SetConsoleTitle(L"Debug Output"); ...
阅读全文
摘要:C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值。不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个地址就是硬件访问的依据,而名字只是提供给程序员的一种记住这个地址的方便一点的方法。但是,不同的变量在机器中都是0-1代码,所以,我们不能简单的通过检...
阅读全文
摘要:我刚才在想两个线程同时访问一个函数有没有问题看到这个我就放心了其实你可以这样想,函数本身只是代码,代码是只读的,无论多少个线程同时调都无所谓(因为只读嘛)。但是函数里面总要用到数据,如果数据属于线程(比如函数参数、局部变量,存在栈上,每个线程都有自己的栈),那么同时调还是没关系,因为用的本线程的数据...
阅读全文
摘要:今天我在想类里面类类型是什么时候初始化的如:class A{ A(B& bb) { b = bb; } public: B b;};class B{ B();};假如A a;定义一个对象会为对象的数据成员分配空间,然后调用构造函数进行初始化从...
阅读全文
摘要:#include using namespace std;int main(){ int *p = new int;//int类型的首地址 int *p2 = new int[10];//指向数组的首地址 //p3是指向int*数组的首地址,因为元素是int*了,所以这个需要时in...
阅读全文
摘要:#include #include using namespace std;int main(){ cout << sizeof(long) << endl;//4 cout << sizeof(long long) << endl;//8 cout << sizeof(__int...
阅读全文

浙公网安备 33010602011771号