课程选择的题目重复了,如何查重并且告知需要重新打一个新的题目
while (1)
{
for (int j = 0; j < i; j++)
{
if (strcmp(pArr[i].title, pArr[j].title) == 0)
break;
}
if (j < i)
{
printf("题目重复,重新输入题目:");
scanf("%s", &pArr[i].title);
}
else
break;
}
加到题目scanf后面
不知道你这个问题是否已经解决, 如果还没有解决的话:class Base
{
public:
Base(int i) :baseI(i){};
virtual ~Base(){}
int getI(){ return baseI; }
static void countI(){};
virtual void print(void){ cout << "Base::print()"; }
private:
int baseI;
static int baseS;
};
class Base_2
{
public:
Base_2(int i) :base2I(i){};
virtual ~Base_2(){}
int getI(){ return base2I; }
static void countI(){};
virtual void print(void){ cout << "Base_2::print()"; }
private:
int base2I;
static int base2S;
};
class Drive_multyBase :public Base, public Base_2
{
public:
Drive_multyBase(int d) :Base(1000), Base_2(2000) ,Drive_multyBaseI(d){};
virtual void print(void){ cout << "Drive_multyBase::print" ; }
virtual void Drive_print(){ cout << "Drive_multyBase::Drive_print" ; }
private:
int Drive_multyBaseI;
};
可见内存布局为,Base,Base_2, 然后再是自己的变量。
Base和Base_2中都有自己的虚函数指针,都有的print方法被重写。两个虚函数表都被重写,继承类的虚函数指针跟在Base类的后面,析构函数也是虚函数。
注意x64架构下指针为8个字节,而x86架构下指针为4个字节。