C++期末复习小整理(二)

**

C++期末考试卷子改错整理

**
不能对引用进行直接赋值,ex:

&r=20;
我们一般在声明的时候给引用直接赋值,不在定义的时候赋值。

我们来看一个比较经典的代码,方便我们理解:
#include
using namespace std;
int main()
{
int a=10,b=20;
int &r=a;
r=b;
printf("%d %d %d\n",a,b,r);
return 0;
}
这个运行出来的结果是20 20 20

原因:
对引用进行赋值操作不是改变引用本身,并非将r修改为变量b的引用,因为r在其生存期内始终只能是a的引用。对r的赋值操作等价于对变量a进行赋值,代码相当于将b的值赋给了a。

函数可以返回引用

自身类不可以作为类的成员,而自身类的指针,引用和另一个类的对象都可以。

同一个运算符在重载的时候可以被重载多次

静态成员函数调用静态的可以,但是静态不可以调用非静态,非静态可以调用静态的,非静态也可以调用非静态的。

在const成员函数里面可以使用this指针,在static成员函数里面不可以使用this指针
因为静态成员是类具有的属性,不是对象的特征,this表示的是隐藏的对象的指针,所以不可以使用this指针,虚函数中可以使用this指针。

抽象类的成员函数不一定都是纯虚函数,但是至少要有一个,抽象类的派生类不一定必须实现抽象类中的纯虚函数,大不了自己也成为一个纯虚函数。

C++的多态分为编译时的多态性和运行时的多态性,
编译时的多态性也称为静态的,静态的通过函数的重载来实现,动态的通过基类指针或者基类引用和虚函数来实现。

实现运行时多态性的机制被称为动态多态性。

假如A为一个类,a为该类公有的数据成员,x为指向该类对象的一个指针,那么我们访问x中数据成员a的格式为
①x->a ②(*x).a

当在默认构造函数,拷贝构造函数,移动构造函数和析构函数如果在成员函数中,我们没有为类实现的时候,编译器会自动为类生成他们的缺省实现。

移动构造函数其实和拷贝构造函数十分相似,只不过拷贝构造函数是复制了一片空间,而移动的是直接使用它的空间,拷贝构造函数对于指针我们用深复制,移动的就用浅复制。

在说到移动构造函数的时候常常说到move这个东西,不知道是什么。

只有类的静态成员我们才可以通过类来直接访问。

类型转换重载符。

哪几种情况需要在参数列表中初始化。

基类的对象必须经过类型转换才可以赋值给派生类的变量。

对象的成员变量可以是其他类的对象。

类的静态成员只需要声明,不一定需要初始化。

不需要创建类的对象,就可以访问类的静态成员。

类的析构函数中不允许访问静态成员。

List 型的容器中,可以同时存储多个相同的元素。

Vector容器里面添加新对象的时候,不需要比较对象的大小,set容器才需要。

Map容器支持下标运算符。

将一个对象放进STL容器里面时,实际上被放入的是该对象的一个拷贝。

Queue中其元素在容器中的位置与元素的值没有关系。

复制构造函数不会创造新的对象。

静态成员函数不可以是虚函数。

可以通过“对象名。成员函数名”的方式来调用静态成员函数。

构造函数不可以是静态的,

如果基类没有无参构造函数,那么写派生类的时候不一定要自己写构造函数。
因为基类可能有所有参数都可以缺省的有参构造函数。

Find函数模板可以作用于set

抽象类可以有成员变量。

常量成员函数可以作用于非常量对象。

抽象类的成员函数都是纯虚函数。

List容器提供了排序成员函数sort

析构函数可以是虚函数,不可以static 成员。

构造函数可以是类的private成员。

构造函数中不可以访问类的纯虚函数。

【】被称之为下标运算符
()被称之为函数调用运算符
= 赋值预算符

静态成员函数可以访问全局数据和函数。

在成员函数中调用虚函数不一定是多态,比如在构造函数和析构函数中调用虚函数就不是多态。

通过“基类对象名.函数名”的方式调用虚函数,不是多态。

多态的函数调用语句中,函数一定是虚函数。

通过“基类引用名.函数名”的方式调用虚函数,是多态。

类的强制类型转换函数返回值类型不可以是void
类的静态成员函数返回值类型可以是void。

一个类的静态成员变量一共就一份,为该类的所有对象所共享。

友元类之间的关系既不能传递也不能继承。

对const成员,引用类型成员以及没有默认构造函数的成员对象,必须通过初始化列表进行初始化。

除了复制构造函数以外,单个形参的构造函数定义了从形参类型到该类类型的一个隐式转换。

静态成员变量可以定义为const类型。

声明引用的时候,必须同时对其进行初始化,引用只能引用变量,引用不是变量,因此本身不占存储单元,不可以通过常引用去修改其引用的内容。

模板中可以不止有一个类型参数,函数模板可以重载,同一个类的模板可能生成不同的类,类模板的成员函数也可以是函数模板。

抽象类的构造函数或者析构函数内部不能调用自己的纯虚函数。

类的成员函数,友元函数,以及其派生类的成员函数,都可以访问protected属性的成员。

Stack不支持迭代器

构造函数和析构函数内部都可以使用this指针。

不可以在一个类的友元函数中使用this指针,因为又不是它的成员函数,当然不可以。

Virtual函数不可以是构造函数。

有可能通过基类的指针调用派生类的虚函数。

构造函数不可以继承。

构造函数中调用虚函数并不是多态,所以在成员函数中调用虚函数是多态这句话就是错的。

类的复制构造函数的类型是本类的引用。

STL的set容器中,是不会有重复元素的。

一个类的私有成员,可以被友元类的所有成员函数直接访问

Const成员函数不可以修改成员变量的值,但是可以调用非const成员函数。

如果将运算符“()”重载为某个类的成员运算符,这个成员函数的参数个数可以是任意的。

运算符可以重载为成员函数和普通函数。

通过指针和引用访问对象的virtual函数的时候,所执行的函数体由对象的类型决定,并不由指针的类型决定。

在基类的函数成员中,可以利用多态机制访问派生类的函数成员。
(什么是多态机制?基类中怎么访问派生类?)

运算符重载函数不可以是static成员。

什么是类型转换运算符函数?为什么不需要声明返回类型?

类的static成员除了可以通过对象的名称、指针、或者引用访问之外,还可以通过类的名称来进行访问。

派生类拥有基类的全部成员,但是并不代表访问权限是所有的,也不代表没有隐藏性。

类C1和类C2都是类模板CT的模板类,程序中,C1和C2的静态成员变量拥有不同的存储空间。

访问this指针和使用this指针有什么区别,为什么友元函数可以访问this指针?

静态成员函数可以访问常量成员么?

公有的静态成员在没有对象生成的时候也可以被直接访问。

什么是函数的对象类?

如果一个类重载了“()”运算符,那么该类的对象是函数对象。

从同一个类模板得到的两个模板类可以共享同一个静态成员。

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值