2022暑期复习-Day3

Posted Booksort

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;
    
;

以上是关于2022暑期复习-Day3的主要内容,如果未能解决你的问题,请参考以下文章

2022暑期复习-Day6

2022暑期复习-Day8

2022暑期复习-Day8

2022暑期复习-Day6

JDK的equals方法都写错了,那到底该怎么写呢?(备战2022春招或暑期实习,每天进步一点点,打卡100天,Day3)

2022暑期复习-Day4