之前在面试中多少会遇到的一些问题,记录下来以便以后翻看
1、不能复制的类:
class Student{
public:
Student(){};
private:
Student(const Student& S ){};
Student&operator= (const Student&){};
....
}
不需要给复制构造函数和私有赋值运算符提供实现,只需将其声明私有即可确保President不可被复制
2、只能有一个实例的单例类:
class Student{
private:
Student(){};
Student(const Student &S ){};
const Student &operator= (const Student &){};
string name ;
public:
static Student& Get()
static Student& Get()
{
static Student OnlyOne;
return OnlyOne;
}
void setName( string Na)
{
this->name=Na;
}
};
int main()
{
Student &OnlyOne=Student::Get();
OnlyOne.setName("Oba");
...
}
关键字static不可少
3、禁止在栈中实例的类:
将析构函数声明为私有函数,但不是能阻止在堆中实例化
A a;//error
A *a=new A();// no complie error