[笔试题]判断CPU的位数(32位还是64位)
摘要:【方法一】使用宏定义,判断long long类型的位数。#include <iostream>using namespace std;#define IS_64bit() (sizeof(long) == 8) #define IS_32bit() (sizeof(long) == 4)void main(void){ cout<<IS_32bit()<<endl; cout<<IS_64bit()<<endl;}【方法二】判断一个指针的大小。sizeof(ptr)。因为指针的位数代表了CPU所能寻址的范围,所以也能判断出来。通过 W
阅读全文
posted @
2011-05-11 22:56
微型葡萄
阅读(369)
推荐(0)
[C++]VS2008使用命令行选项查看对象的内存布局
摘要:微软的Visual Studio 2008(VS2008)提供了一个新的选项,给用户显示C++对象在内存中的布局。这个选项就是/d1reportSingleClassLayout。具体使用方法如下,在写好相应的cpp文件之后,需要启动VS2008的命令行工具“Visual Studio 2008 Command Prompt”,切换到cpp文件所在目录之后,输入如下的命令:cl [filename].cpp /d1reportSingleClassLayout[className]cl当然就是MS的编译器咯;[filename].cpp就是你所想要查看的class所在的cpp文件(class定
阅读全文
posted @
2011-05-11 22:56
微型葡萄
阅读(1430)
推荐(0)
[C++]名字查找与作用域
摘要:【概念】a) 作用域。作用域有大小之分。比如全局作用域大于局部作用域,这个很显然。要强调的是另一点:基类作用域大于派生类作用域。可能有人会有疑问,这两个作用域看不见摸不到,怎么知道大小?但是其实仔细想想,这很符合现实世界的面向对象模型:鱼的作用域显然要比金鱼大,交通工具的作用域肯定要比飞机大。如果你实在理解不了,那你还是就这么记住吧。b) 名字查找。请注意,这里的名字仅仅是指函数的名字,而不是原型!名字相同,查找即成功。这是个跟作用域密切相关的概念。名字查找符合以下的过程:1.根据对象,指针,引用的静态版本决定哪一个函数被调用。2.到相应的类中查找,如果没有找到,则到该类的直接基类中查找,按此
阅读全文
posted @
2011-05-11 22:56
微型葡萄
阅读(445)
推荐(0)
[C++]多态和构造顺序
摘要:一道C++多态的题目,考察多态和构造顺序的。求输出结果:#include <iostream>#include <vector>class Base{public: Base(){ cout<<"Base::Base()"<<endl; virt(); }virtual void virt() { cout<<"Base::virt()"<<endl; }void func(){ cout<<"Base::func()"<<endl; }}
阅读全文
posted @
2011-05-11 22:55
微型葡萄
阅读(425)
推荐(0)
[C++]虚函数与静态函数冲突
摘要:今天看到一个有意思的C++语法问题。就是如果一个派生类中含有与基类虚函数重名的静态成员函数,用指针调用会如何。代码如下:#include <iostream>using namespace std;class A{public:void virtual print(){ cout<<"A::print()"<<endl; }};class B :public A {public:void virtual print(){ cout<<"B::print()"<<endl; } } ; class
阅读全文
posted @
2011-05-11 22:55
微型葡萄
阅读(681)
推荐(0)
[C++]重载、覆盖与继承
摘要:a) 重载(overload)。重载这个名词本身比较简单,函数一共只有三个要素:函数名、形参、返回值。重载的要素是很明确的:函数重名,形参不同(个数或者类型不同都可以)。与返回值无关。但是一定请不要忘记重载另一个非常重要的要素:同一个作用域内才发生重载![重载与继承]关于这二者的关系有两条准则(仔细看,其实就是一条):如果派生类重定义了重载成员,则通过派生类型只能访问派生类中重定义的那些成员。如果派生类想通过自身类型使用所有的重载版本,则派生类必须要么重定义所有的重载版本,要么一个也不重定义。b) 覆盖(override)同一个作用域内满足一定条件会发生重载。那不同的作用域内呢?只满足一个条件
阅读全文
posted @
2011-05-11 22:55
微型葡萄
阅读(493)
推荐(0)
[C++]《深入探索C++面向对象模型》读书笔记
摘要:本文是第二遍重读此书的读书笔记,因此只捡了一些自己在重读时仍感重要的知识进行了记录。当然会有些东西遗漏,对我不重要的不一定对每个人都不重要。PS:这些东西还是需要一定的C++语法基础的。再PS:页数都是按照侯捷先生的中文版所标。粗体部分乃是重中之重。================================================================================【第一章】在虚拟继承的情况下,base class不管在继承链中被派生多少次,永远只存在一个实体。P11C++中凡是处于同一个access section的数据,必定保证以其声明次序出现在内
阅读全文
posted @
2011-05-11 22:55
微型葡萄
阅读(474)
推荐(0)