常见的编程语言类面试题及解答

1. 面试官让说一些C++中一些重要的点

  友元关系继承问题:友元关系不能继承。基类的友元对派生类的成员没有特殊访问权限。如果基类被授予友元关系,则只有基类具有特殊访问权限,该基类的派生类不能访问授予友元关系的类。(摘取:《c++ primer 第四版》)

  静态成员继承问题:如果基类定义 static 成员,则整个继承层次中只有一个这样的成员。无论从基类派生出多少个派生类,每个 static 成员只有一个实例。(摘取:《c++ primer 第四版》)

c++面试必问:c++和c的8点不同


2. 面向对象的思想,封装,继承,多态,分别描述一下,举例说一下运行时多态

2.1 面向对象的思想:

  面向对象是基于面向过程而言的,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节;这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种优化,操作起来更加的方便,简化了过程。

2.2 封装: 隐藏对象的属性和实现细节,仅对外提供公共访问方式

  • 将变化隔离、便于使用、提高复用性、提高安全性

2.3 继承: 提高代码复用性;继承是多态的前提

  注: ①子类中所有的构造函数都会默认访问父类中的空参数的构造函数,默认第一行有super();若无空参数构造函数,子类中需指定;另外,子类构造函数中可自己用this指定自身的其他构造函数。

2.4 多态: 只要实现或继承了同一个接口或类,那么就可以使用父类中相应的方法。

  • 好处:提高了程序的扩展性
  • 弊端:当父类引用指向子类对象时,虽提高了扩展性,但只能访问父类中具备的方法,不可访问子类中的方法;即访问的局限性。

2.5 运行时的多态性: 就是指直到系统运行时,才根据程序运行中产生的信息确定需要调用哪个同名的函数。在C++中,运行时多态是通过继承和虚函数来实现的。

什么是面向对象思想


3. strcpy函数的功能

  答: strcpy(字符数组1,字符串2) 作用是将字符串2复制到字符数组1中去。

拓展:

  1. strncpy(str1,str2,2); 作用是将str2中最前面2个字符复制到 str1中,取代 str1 中原有的最前面2个字符。
  2. c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。
    用法:void *memcpy(void *dest, const void *src, size_t n);
  3. strcpy和memcpy的区别:
    1).复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
    2).复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
    3).用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy

4. 以下C程序的运行结果中,输出的加号的个数为 14

int main() {
    for (int i = 0; i < 3; i++) {
        fork();
        printf("+");
        fflush(stdout);
    }
    wait(NULL);  // 等待子进程退出
    wait(NULL);
    wait(NULL);
    return 0;
}
发布了378 篇原创文章 · 获赞 43 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_43283397/article/details/104932552
今日推荐