不在派生类中递增静态变量

时间:2016-04-30 16:56:12

标签: c++

我上课了班主任和班级。我应该怎么做静态(比如类Head的对象的计数器)变量,它不会在派生类中递增。

在班组中:

class Head{
    private:
         static int counter;
         string name;
         int amount;
    public:
         Head(const string& n):name(n){
             counter++;
         }
};
int Head::counter=0;

和Derived中的课程:

class Derived: public Head{
    public:
       Derived(const string& n):Head(n){};
};

我的目标是在创建Derived类的新对象时不增加计数器。 我该怎么用?虚拟课,有人可以解释一下如何解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

在构造函数中创建一个条件(完全未经测试):

class Head{
    private:
         static int counter;
         string name;
         int amount;
    public:
         Head(const string& n, bool increment = true):name(n) {
             if (increment) {
                 counter++;
             }
         }
};
int Head::counter=0;

和Derived中的课程:

class Derived: public Head{
    public:
       Derived(const string& n):Head(n, false){};
};

答案 1 :(得分:0)

隔离ctors,为派生类添加另一个受保护的ctor?

$query =  mysqli_query($mysqli,"SELECT surname FROM users WHERE userID = 1");

答案 2 :(得分:0)

您可以通过更改签名 重载 constructor

class Head{
    private:
     static int counter;
     string name;
     int amount;
    public:
     Head(){}   
     Head(const string& n):name(n) {count++;}
     Head(const string& n,int a):name(n) {}
}
int Head::counter=0;



class Derived{
    public:
       Derived(const string& n):Head(n,1){};
}