我上课了班主任和班级。我应该怎么做静态(比如类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类的新对象时不增加计数器。 我该怎么用?虚拟课,有人可以解释一下如何解决这个问题吗?
答案 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){};
}