2022暑期复习-Day9
Posted Booksort
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022暑期复习-Day9相关的知识,希望对你有一定的参考价值。
目录
选择题
Q1 下面代码的输出结果是( )。
class CParent
public: virtual void Intro()
printf("I'm a Parent, "); Hobby();
virtual void Hobby()
printf("I like football!");
;
class CChild : public CParent
public: virtual void Intro()
printf("I'm a Child, "); Hobby();
virtual void Hobby()
printf("I like basketball!\\n");
;
int main( void )
CChild *pChild = new CChild();
CParent *pParent = (CParent *) pChild;
pParent->Intro();
return 0;
A: I’m a Parent, I like football!
B: I’m a Parent, I like basketball!
C: I’m a Child, I like basketball!
D: I’m a Child, I like football!
涉及到多态知识点。
父类指针指向子类。虚函数表不会被影响,所以父类指针调用的函数一直是虚函数,去vptr指向的虚函数表中找到函数指针,然后创建函数栈每调用函数,调用的都是子类重写的虚函数
答案:C
Q2 若 char 是 1 字节, int 是 4 字节,指针类型是 4 字节,代码如下:
class CTest
public:
CTest():m_chData('\\0'),m_nData(0)
virtual void mem_fun()
private:
char m_chData;
int m_nData;
static char s_chData;
;
char CTest::s_chData='\\0';
A: 16 4
B: 16 10
C: 12 9
D: 10 10
对于类中的静态成员是不会计入大小计算的,因为所有类就只有这一个静态变量。
对于有虚函数的类中,需要考虑vfptr虚函数表指针,这个指针放在第一个内存的位置。
根据内存对其的规则计算,
答案:C
Q3 下面关于虚函数和函数重载的叙述不正确的是()。
A: 虚函数不是类的成员函数
B: 虚函数实现了C++的多态性
C: 函数重载允许非成员函数,而虚函数则不行
D: 函数重载的调用根据参数的个数、序列来确定,而虚函数依据对象确定
由动态的多态-基类指针或引用调用派生类的虚函数
静态的多态-函数重载
概念可知
虚函数必须是类的成员函数
答案:A
Q4 对于一个频繁使用的短小函数,在C语言中用宏实现,在C++中应用( )实现。
A: 虚函数
B: 内联函数
C: 友元
D: 抽象类
inline 返回值 函数名 参数列表
函数体
在编译时,就会自动检查,放入代码中,这样也会导致生成的文件变大,所以要求使用短小的函数
有一个注意点,内联函数,不能调用递归函数。
答案:B
Q5 下面有关虚函数和非虚函数的区别说法错误的是( )。
A: 子类的指针访问虚函数访问的是子类的方法
B: 子类的指针访问非虚函数访问的是子类的方法
C: 父类的指针访问虚函数访问的是父类的方法
D: 父类的指针访问非虚函数访问的是父类的方法
这是多态的概念:父类指针访问的是谁的方法取决于父类指针指向的是什么对象,因为指向的什么对象提供了访问的_vfptr,这才是决定父类指针访问的虚函数是谁的。
答案: C
编程题
比较简单
Q6
直接使用下标索引,来确定每个字符在第几行,就不用使用函数或者遍历查找,快捷方便。
class Solution
public:
string index = "12210111011122000010020202";
vector<string> findWords(vector<string>& words)
//先建立一个元素判断表
int flag;
vector<string> ret;
for(int i =0 ;i < words.size(); i++)
flag = -1;
for(int j = 0; j < words[i].size();j++)
char tmp = islower(words[i][j])?words[i][j]:words[i][j] + 32;
int row = index[tmp - 'a'] - '0';
if(flag==-1)
flag = row;
else if(flag!= row)
flag = -1;
break;
if(flag!=-1)
ret.push_back(words[i]);
return ret;
;
Q7
class Solution
public:
int numJewelsInStones(string jewels, string stones)
int count = 0;
for(int i = 0;i < stones.size();i++)
if(find(jewels.begin(),jewels.end(),stones[i])!=jewels.end())
count++;
return count;
;
以上是关于2022暑期复习-Day9的主要内容,如果未能解决你的问题,请参考以下文章