面试题47:不用加减乘除做加法
题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
int Add(int num1,int num2)
{
int sum,carry;
do
{
sum = num1 ^ num2;
carry = (num1 & num2) << 1;
num1 = sum;
num2 = carry;
}
while(num2 != 0);
return num1;
}
面试题48:不能被继承的类
题目:用C++设计一个不能被继承的类。
常规的解答:把构造函数设为私有函数
class SealedClass1
{
public:
static SealedClass1* GetInstance()
{
return new SealedClass1();
}
static void DeleteInstance(SealedClass1* pInstance)
{
delete pInstance;
}
private:
SealedClass1() {}
~SealedClass1() {}
};
这个类是不能被继承的,但总感觉它和普通的类型有些不一样,使用起来有点不方便。比如我们只能得到位于堆上的实例,而得不到位于栈上的实例。