2022暑期复习-Day3

选择题

Q1 关于重载函数,( )说明是正确的。

A: 函数名相同,参数类型或个数不同
B: 函数名相同,返回值类型不同
C: 函数名相同,函数内部实现不同
D: 函数名称不同

函数重载-静态的多态
要求函数名相同,参数列表不同,缺省参数要从右向左排布

答案:A

Q2 关于引用以下说法错误的是( )。

A: 引用必须初始化,指针不必
B: 引用初始化以后不能被改变,指针可以改变所指的对象
C: 不存在指向空值的引用,但是存在指向空值的指针
D: 一个引用可以看作是某个变量的一个“别名”
E: 引用传值,指针传地址
F: 函数参数可以声明为引用或指针类型

引用必须显示初始化,而指针可以不用显示初始化,但是其编译器自动指向了某个不重要的地址。

引用初始化就绑定了一个对象,这个无法再去绑定其他的对象。

引用,起先我个人认为引用也算一种传值,只不过和普通的传值相比,传值是传递的是值的拷贝,而传引用传的是值本身。但是细想,如果仅仅所谓的传递值本身,是没有意义的,C++中没有传递值本身这个说法,且引用在底层上也是指针的一种封装,所以引用传递的也是地址

答案:E

Q3 以下程序输出的是( )。

在这里插入图片描述
A: 编译阶段报错运行阶段报错
B: a = 10, *p = 10
C: a = 20, *p = 20
D: a = 10, *p = 20
E: a = 20, *p = 10

这个可以去IDE试试

引用我的C++类型转换的笔记
在这里插入图片描述

答案:D

Q4 在 Windows 32 位操作系统中,假设字节对齐为 4 ,对于一个空的类 A , sizeof(A) 的值为( )。

A: 0
B: 1
C: 2
D: 4

类的实例化是在内存中分配一块地址,每个实例在内存中都有独一无二的二地址。同样,空类也会实例化,所以编译器会给空类隐含的添加一个字节,这样空类实例化后就有独一无二的地址了
所以,空类的sizeof为1,而不是0. 多重继承的空类的大小也是1.

答案:B

Q5 有如下类的定义:

在这里插入图片描述

在所描述的函数中,具有隐含 this 指针的是哪个( )。
A: F1
B: F2
C: F3
D: F4

只有类中的成员函数才能隐含this指针,但是static类的成员函数是不具备this指针

引用侯捷老师的一句话

静态成员函数没有this指针,不与类的实例(对象)“挂钩”,所以C++静态成员函数不能声明为constvolatilevirtual

答案:C

编程题

Q6

在这里插入图片描述

version-1

class Solution {
public:
    void rotate(string& s,int left,int right)
    {
        while(left<right)
        {
            char tmp = s[left];
            s[left] = s[right];
            s[right] = tmp;
            left++;
            right--;
        }
    }
    string reverseWords(string s) {
        int len = s.size();
        int i=0;
        int prev=0;
        while(i<len)
        {
            if((i<len-1&&s[i+1]==' ')||(i==len-1&&s[i]!=' '))
            {
                if(prev!=i)
                {
                    rotate(s,prev,i);
                }
                prev = i+2;
            }
            i++;
        }
        return s;
    }
};

version-2

class Solution {
public:
string reverseWords(string s)
{
	// [start, pos)标记一个单词
	int start = 0;
	int pos = 0;
	while (start < s.size())
	{
		// 从start位置开始,从前往后找最近的一个空格
		pos = s.find(' ', start);
		// 如果pos是-1,说明[start, s.size())刚好是最后一个单词,调整下pos
		if (pos == -1)
			pos = s.size();
		// 逆置[start, pos)表示的单词
		std::reverse(s.begin()+start, s.begin() + pos);
		// 将start挪动到下一个单词的起始位置
		start = pos + 1;
} 
	return s;
}

Q7

在这里插入图片描述

class Solution {
public:
    int maxPower(string s) {
        int len =s.size();
        int i=0;
        int prev=0;
        int maxlen=0;
        while(i<len)
        {
           if(s[i]==s[prev])
           {
               maxlen = max(i-prev+1,maxlen);
           }
           else
           {
               prev = i;
           }
           i++;
        }
        return maxlen;
    }
};
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值