百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

秋招C++八股--关键字、运算符相关(持续更新)

toyiye 2024-08-17 00:31 7 浏览 0 评论

整理全网c++1000道面试题。文章所展现为统计高频题及答案。



需要1000道面试PDF,【「链接」

1 strlen和sizeof区别?

strlen和sizeof是C++中用于处理字符串和计算内存大小的操作。

  1. strlen函数:
  2. strlen函数是C标准库中的函数,用于计算字符串的长度,即字符串中字符的个数(不包括结尾的空字符'\0')。
  3. 它接受一个以'\0'结尾的字符数组作为参数,并返回该字符串的长度
  4. strlen函数通过遍历字符数组来计算长度,直到遇到空字符为止。
  5. sizeof运算符:
  6. sizeof是C++中的运算符,用于计算对象或类型的大小,即占用的内存字节数
  7. 它可以用于计算各种类型的大小,包括基本类型、自定义类型和数组等。
  8. sizeof运算符在编译时求值,返回的结果是一个常量表达式,在编译阶段就可以确定。

区别:

  • strlen用于计算以'\0'结尾的字符数组的长度,即字符串的长度,返回的是字符个数。
  • sizeof用于计算对象或类型的大小,返回的是占用的内存字节数。

需要注意的是,strlen计算的是字符串的实际长度,而sizeof计算的是类型或对象占用的内存大小。因此,在使用时要注意选择适当的操作,以满足具体的需求。

int main()
{
    const char* str = "name"; 4
    sizeof(str); // 取的是指针str的长度,是8
    strlen(str); // 取的是这个字符串的长度,不包含结尾的 \0。大小是4
    return 0; 
}

2 C++ 中的异常处理方法

在程序执行过程中,由于程序员的疏忽或是系统资源紧张等因素都有可能导致异常,任何程序都无法保 证绝对的稳定,常见的异常有: 数组下标越界

除法计算时除数为0 动态分配空间时空间不足 ... 如果不及时对这些异常进行处理,程序多数情况下都会崩溃。

1.try、throw和catch关键字

代码中,对两个数进行除法计算,其中除数为0。可以看到以上三个关键字,程序的执行流程是先执行 try包裹的语句块,如果执行过程中没有异常发生,则不会进入任何catch包裹的语句块,如果发生异 常,则使用throw进行异常抛出,再由catch进行捕获,throw可以抛出各种数据类型的信息,代码中使 用的是数字,也可以自定义异常class。catch**根据*throw*抛出的数据类型进行精确捕获(不会出现类型 转换),如果匹配不到就直接报错,可以使用**catch(...)的方式捕获任何异常(不推荐)。当然,如果catch了异常,当前函数如果不进行处理,或者已经处理了想通知上一层的调用者,可以在catch里面再throw异常。

#include <iostream>
using namespace std;

int main() {
    double m = 1, n = 0;
    try {
        cout << "before dividing." << endl;
        if (n == 0)
            throw - 1;    // 抛出int型异常
        else if (m == 0)
            throw - 1.0;  // 抛出double型异常
        else
            cout << m / n << endl;
        cout << "after dividing." << endl;
    }
    catch (double d) {
        cout << "catch (double)" << d << endl;
    }
    catch (...) {
        cout << "catch (...)" << endl;
    }
    cout << "finished" << endl;
    return 0;
}

2.函数的异常声明列表

有时候,程序员在定义函数的时候知道函数可能发生的异常,可以在函数声明和定义时,指出所能抛出 异常的列表,写法如下:

int fun() throw(int,double,A,B,C){...}; 

这种写法表名函数可能会抛出int,double型或者A、B、C三种类型的异常,如果throw中为空,表明不 会抛出任何异常,如果没有throw则可能抛出任何异常

3.C++ 标准异常类

bad_typeid:使用typeid运算符,如果其操作数是一个多态类的指针,而该指针的值为 NULL,则会拋出此异常,例如:

#include <iostream>
#include <typeinfo>

using namespace std;

class A {
public:
    virtual ~A();
};

int main() {
    A* a = nullptr;
    try {
        cout << typeid(*a).name() << endl; // Error condition
    } catch (bad_typeid) {
        cout << "Object is NULL" << endl;
    }
    return 0;
}

bad_cast:在用 dynamic_cast 进行从多态基类对象(或引用)到派生类的引用的强制类型转换时,如果转换是不安全的,则会拋出此异常 bad_alloc:在用 new 运算符进行动态内存分配时,如果没有足够的内存,则会引发此异常

out_of_range:用 vector 或 string的at 成员函数根据下标访问元素时,如果下标越界,则会拋出此异常

3 初始化和赋值的区别

初始化是在对象创建时进行的赋值,使用构造函数或拷贝构造函数;赋值是在对象已存在的情况下进行的重新赋值,使用赋值操作符函数。两者的调用方式和对象状态有所不同。

class A {
public:
    int num1;
    int num2;
public:
    A(int a = 0, int b = 0) :num1(a), num2(b) {};
    A(const A& a) {};
    //重载 = 号操作符函数 
    A& operator=(const A& a) {
        num1 = a.num1 + 1;
        num2 = a.num2 + 1;
        return *this
    };
};
int main() {
    A a(1, 1);
    A a1 = a; //拷贝初始化操作,调用拷贝构造函数 
    A b;
    b = a;//赋值操作,对象a中,num1 = 1,num2 = 1;对象b中,num1 = 2,num2 = 2 
    return 0;
}

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码