电子说
Sharp作为抽象基类,也不好计算其面积,所以没有实例化的必要。 工具类 比如我们在QT中经常遇到的代码:class Sharp
{
};
class Circle : public Sharp
{
};
class Rectangle : public Sharp
{
};
QFileDialog::getOpenFileName(this, "选择一个文件", QCoreApplication::applicationFilePath(), "*.cpp");
很多情况下我们只是需要通过函数 getOpenFileName 来获得当前文件的路径,没必要去创建对象。当然这里只是举个例子,并不是说 QFileDialog 是工具类。
还有这样一种情况,我们需要一个类来封装加、减、乘、除。
class Calculate
{
public:
static int add(int x, int y);
static int sub(int x, int y);
static int mul(int x, int y);
static int div(int x, int y);
};
上面这个类就是一个典型的工具类,用它创建对象没有意义,可以直接通过类名调用静态成员函数。 如何阻止 方法一:类中包含纯虚函数。 还是上面的Sharp类。
class Sharp
{
public:
virtual void get_s() = 0; //纯虚函数
};
纯虚函数没有函数体。 含有纯虚函数的类叫抽象类。 抽象类不好创建对象,因为就算是创建了对象,调用纯虚函数的时候,也不知道如何执行。 方法二:构造函数私有 还是上面的计算类。
class Calculate
{
private:
Calculate();
public:
static int add(int x, int y);
static int sub(int x, int y);
static int mul(int x, int y);
static int div(int x, int y);
};
把构造函数设置成私有,就不能在类的外部创建对象,相当于间接的阻止了该类实例化对象。
审核编辑 :李倩
全部0条评论
快来发表一下你的评论吧 !