C++基础知识总结-3

一、隐式类型转换

首先,对于内置类型,低精度的变量给高精度的变量赋值是会发生隐式类型转换。其次,对于只存在单个参数的构造函数的对象构造来说,函数调用可以直接使用该参数传入,编译器会自动调用其构造函数生成临时对象。

二、new/delete和molloc/free的区别

首先,new/delete是C++的关键字,而molloc/free是C语言的库函数,后者使用不许指明申请内存空间的大小,对于类类型的对象,后者不会调用构造函数和析构函数。

三、fork、wait、exec函数

父进程产生子进程使用fock拷贝出来一个父进程的副本,此时只拷贝了父进程的页表,两个进程都读同一块内存,当有进程写的时候使用实拷贝机制分配内存。exec函数可以加载一个elf文件去替换父进程,从此父进程和子进程就可以运行不同的程序了。fork从父进程返回i子进程的pid,从子进程返回0。调用了wait的父进程将会发生阻塞,直到有子进程状态改变,执行成功返回0,错误返回-1。exec执行成功则子进程从新的程序开始运行,无返回值,执行失败返回-1。

四、重载和覆盖

重载:两个函数名相同,但是参数列表不同(个数,类型,顺序),返回值类型没有要求,在同一作用域中。

重写(覆盖):子类继承了父类,父类中的函数是虚函数,在子类中重新定义了这个虚函数,这种情况是重写。

五、C++中类成员的访问权限

C++通过public、protected、private三个关键字来控制成员变量和成员函数的访问权限,他们分别表示公有的、受保护的、私有的,被称为成员访问限定符。在类的内部(定义类的代码内部),无论成员被声明为什么,都是可以相互访问的,没有访问权限的限制;在类的外部(定义类的代码之外),只能通过对象访问成员,并且通过对象只能访问public属性的成员,不能访问private和protected属性的成员,要想访问,必须通过公有成员函数进行访问。

六、C++中struct和class的区别

在C++中,可以用struct和class定义类,都可以继承。区别在于,struct的默认继承权限和默认访问权限是public,而class的默认继承权限和默认访问权限是private。另外,class还可以定义模板类形参,比如template<class T,int i>

七、左值引用和右值引用的区别

右值引用是C++11中引入的新特性,他实现了转移语义和精确传递。它的主要目的有两个方面:1、消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率。2、能够更简洁明确地定义泛型函数。

左值和右值的概念:

左值:能对表达式取地址、或匿名对象/变量。一般只表达式结束后依然存在的持久对象。

右值:不能对表达式去地址,或匿名对象。一般指表达式结束就不再存在的临时对象。

右值引用和左值引用的区别:

  1. 左值可以寻址,而右值不可以。
  2. 左值可以被赋值,右值不可以被赋值,可以用来给左值赋值。
  3. 左值可变,右值不可变(仅对于基础类型适用,用户自定义类型右值引用可以通过成员函数改变)。
发布了60 篇原创文章 · 获赞 8 · 访问量 3105

猜你喜欢

转载自blog.csdn.net/Mr_robot_strange/article/details/104729491
今日推荐