自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 2021-07-13

② 在继承关系中,基类和派生类都有的成员函数,如果使用了virtual关键字,程序将根据引用或指针指向的对象的类型来选择方法;因此,在派生类中重新定义基类的方法,通常应将基类方法声明为虚的,这样程序将根据对象类型而不是引用或指针的类型来选择方法版本。① 继承is-a关系,即is-a-kind-of(是一种),可以使用公有继承建立has-a,is-implement-as-a或者uses-a,但是,这样常常会导致编程方面的问题,因此坚持is-a关系。(不能建立is-like-a关系)

2023-07-18 15:58:59 31

原创 2021-07-12

③ 利用派生类引用调用基类构造函数创建基类对象,此种形式不存在,但是可以通过将:基类(派生类引用)改成—>基类(基类引用)的隐式复制构造函数来解决,因为兼容性使得可以将前式的派生类引用放到后式基类引用处。基类指针(或引用)可以在不进行显式类型转换的情况下指向派生类对象使得基类引用定义的函数参数或指针参数可用于基类对象或派生类对象。② 利用基类引用调用派生类构造函数创建派生类对象:派生类(基类引用)—>该派生类对象调用基类方法:派生类.基类方法()。

2023-07-18 15:58:06 41

原创 2021-07-10

② 派生类对象在向基类对象转换时,会发生“对象切片”,对象被“切片”直到只剩下合适的基类子对象,对象切片实际上是当它拷贝到一个新对象时,去掉原来对象的一部分。基类对象指针和引用与派生类对象的指针和引用之间的转换,不会发生对象切片问题,只是简单地改变地址的内容,但会损失对象的类型信息。① 基类对象不能赋值给派生类对象,但派生类对象可以赋值给基类对象。当类型不为引用时,不保留const属性。当类型为引用时,保留const属性。

2023-07-18 15:56:11 35

原创 2021-07-09

由于tp的类型为TableTennisPlayer &,因此将调用基类的复制构造函数,基类没有定义复制构造函数,则编译器将自动生成一个。② 除虚基类外,类只能将值传递回相邻的基类,但后者能使用相同的机制将信息传递给相邻的基类,依此类推。派生类构造函数应初始化派生类新增的数据成员。(考虑到速度更快,可以使用成员初始化列表语法)派生类构造函数应通过成员初始化列表将基类信息传递给基类构造函数;③ 成员初始化列表只能用于构造函数。

2023-07-18 15:54:11 40

原创 2021-07-08

① 使用公有派生,基类的公有成员将成为派生类的公有成员,基类的私有部分也将成为派生类的一部分,但只能通过基类的公有(public)和保护(protected)方法访问。如果不调用基类构造函数,程序将使用默认的基类构造函数,否则应显式地调用正确的基类构造函数。④ 派生类不能直接访问基类的私有成员,而必须通过基类方法进行访问。具体地说,派生类构造函数必须使用基类构造函数。③ 派生类的构造函数必须给新成员和继承的成员提供数据。派生类可以根据需要添加额外的数据成员和成员函数。派生类需要自己的构造函数。

2023-07-18 15:52:07 28

原创 2021-07-07

② 初始化对象数组的方案是,首先使用默认构造函数创建数组元素,然后花括号中的构造函数将创建临时对象,然后将临时对象的内容复制到相应的元素中。③ 在类中定义的名称(如类数据成员名和类成员函数名)的作用域都为整个类,作用域为整个类的名称只在该类中是已知的,在类外是不可知的。从以上代码中的两个“使用未限定的成员名称”可以看出,在类声明或成员函数定义中,可以使用未修饰的成员名称(未限定的名称)。也可以用关键字struct代替class,枚举量的作用域为类后,不同枚举定义中的枚举量就不会发生名称冲突了。

2023-07-18 15:50:08 26

原创 2021-07-06

不同对象在调用同一个成员函数时,只是相当于传入不同的数据,返回的数据给到不同的对象;上述语句1和语句2同时出现时,语句1表示创建一个对象并初始化它,而语句2由于stock1已经存在,将不会创建新的对象,而是创建一个临时对象,并把该临时对象的值赋给stock1,随后程序调用析构函数以删除该临时对象。上述两种初始化对象的方式的区别是,方式2在使用某些编译器编译时,可能会允许调用构造函数来创建一个临时对象,然后将该临时对象复制到stock2中,并丢弃该临时对象,这时就会调用临时对象的析构函数。

2023-07-18 15:45:38 42

原创 2021-07-04

② 位段类型是一种特殊的结构类型,位段类型对成员位段的引用与结构体对成员变量的引用方式是一样的。可以用"%d",“%x”,“%u”,"%o"等格式字符,以整数形式输出位段,在数值表达式中引用位段时,系统自动将位段转换为整数。⑤ #include指令,用尖括号时,系统到存放C库函数头文件所在的目录中寻找要包含的文件;用双引号时,系统先在用户当前目录中寻找要包含的文件,若找不到,再到存放C库函数头文件所在的目录中寻找。① 共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用。

2023-07-18 11:45:10 26

原创 2021-07-01

switch语句检验的条件必须是一个整型表达式,case语句检验的值必须是一个整型常量(也可以是常量对应的字母)。① 二维数组为所有元素赋初值的时候,若大括号内的数据个数少于数组元素的个数,则系统默认将后面未被赋值的元素值设置为0,且添加数据的方向为按行添加。5、对于gets_s函数来说,如果函数的参数直接是一个定义好的字符数组的名字,则不用再在gets_s函数中声明buffer大小;如果函数的参数是一个指向已知大小的字符数组的指针,则需要在gets_s函数中声明buffer的大小。

2023-07-18 11:42:44 28

原创 【无标题】

5、某基本类型的指针p的自增运算p++是指向下一个存放该基本数据类型的地址,即按照它所指向的数据类型的直接长度进行增加;值得注意的是,虽然数组名a可以通过偏移量i实现*(a+i)来直接表示数组的第i个元素,但是数组名并不能像指针变量那样自增和自减。6、对于结构体中有字符数组的情况,由于字符数组只能在定义时直接初始化,后面就只有用strcpy()函数来复制初始化,因此最好是在定义该类结构体时直接初始化。6、二维数组a[m][n],a[0]表示第0行的首地址,a[0]+j 就是第0行第j个元素的地址。

2023-07-18 11:33:46 37

原创 【无标题】

M1安装Android Studio

2022-06-16 23:35:16 412 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除