十二章-类设计回顾-重要知识点

简介: 十二章-类设计回顾-重要知识点

默认构造函数

1.没有定义构造函数,编译器将自动定义默认构造函数,如果定义了构造函数,将不会定义默认构造函数,如果需要默认构造函数则需要自己添加。

2.如果是派生类并且数据成员中还有类的话,默认构造会调用基类和数据成员相关类的构造函数。

3.如果类包含指针对象。必须初始化指针。

复制构造函数

复制构造函数接受所属类的对象作为参数

有四种情况会调用复制构造函数:

1.用已有对象初始化新对象

2.按值将对象传递给函数

3.函数按值返回对象

4.编译器生成临时对象

在使用new初始化的成员函数通常要求执行深复制,或者类可能包含需要修改的静态变量,在这些情况下需要自己定义复制构造函数来满足要求。


赋值运算符

默认的赋值运算符用于处理同类对象之间的赋值。

注意初始化是创建新的对象,而赋值是修改原有对象。

什么时候需要显示定义赋值运算符:

1.当需要深复制的时候

2.将一种类型赋值给另外一种类型

将一种类型赋值给另外一种类型还有一种方法就是,采用转换函数,将一个类型转换为另外一种类型,再进行同种对象间的赋值。


其他的类方法

1.构造寒素并不会被继承

2.一定要定义显示的析构函数去清理构造函数中用new开辟的内存。基类析构函数一定要设置为虚析构函数。

3.一个构造函数可以充当转换函数。例如

Star (const char*);//一个参数的构造函数
Star (const Spectral &, int members = 1);
Star north;
north = "polaris";

如果不想要这种隐式转换,则需要将一个参数的构造函数用关键词explicit禁止隐式转换,但是还是允许显示转换。

4.将类对象转换为其他类型,应该定义转换函数。转换函数可以是没有参数的类成员函数,也可以是返回类型被声明为目标类型的类成员函数。即使没有声明返回类型,函数也应返回所需返回值。

5.按值传递对象与传递引用

常用引用来传递对象的原因有两种:

1.引用传递效率高

2.在继承使用虚函数时,被定义为接受基类引用参数的函数可以接受派生类。


目录
相关文章
|
算法 Java 编译器
C++ | 深入浅出类的封装思想【图文案例,通俗易懂】-1
C++ | 深入浅出类的封装思想【图文案例,通俗易懂】
290 3
|
7月前
|
存储 C++
【C++】多态(重写)的实现过程及其原理【核心知识点精讲】(22)
【C++】多态(重写)的实现过程及其原理【核心知识点精讲】(22)
|
算法 Java 编译器
C++ | 深入浅出类的封装思想【图文案例,通俗易懂】-3
C++ | 深入浅出类的封装思想【图文案例,通俗易懂】
73 0
|
7月前
|
设计模式 安全 算法
【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]
【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]
56 0
|
存储 编译器 程序员
C++ | 深入浅出类的封装思想【图文案例,通俗易懂】-2
C++ | 深入浅出类的封装思想【图文案例,通俗易懂】
386 0
|
4月前
|
设计模式 Java
常用设计模式介绍~~~ Java实现 【概念+案例+代码】
文章提供了一份常用设计模式的全面介绍,包括创建型模式、结构型模式和行为型模式。每种设计模式都有详细的概念讲解、案例说明、代码实例以及运行截图。作者通过这些模式的介绍,旨在帮助读者更好地理解源码、编写更优雅的代码,并进行系统重构。同时,文章还提供了GitHub上的源码地址,方便读者直接访问和学习。
常用设计模式介绍~~~ Java实现 【概念+案例+代码】
|
5月前
|
C++
C++基础知识(四:类的学习)
类指的就是对同一类对象,把所有的属性都封装起来,你也可以把类看成一个高级版的结构体。
|
5月前
|
设计模式 存储 C#
|
6月前
|
C++
C++继承的相关知识点
C++继承的相关知识点
34 0
|
设计模式 安全 C++
C++进阶 特殊类的设计
C++进阶 特殊类的设计
44 0