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

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

默认构造函数

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.在继承使用虚函数时,被定义为接受基类引用参数的函数可以接受派生类。


目录
相关文章
|
2月前
|
Java
软件工程设计原理迪米特法则原则优缺点及JAVA代码举例
【4月更文挑战第8天】迪米特法则,也称为最少知识原则,是软件工程中一个旨在减少软件实体之间耦合关系的设计原则。它建议一个对象应该对其他对象有尽可能少的了解,并且只与直接的朋友通信。
56 10
|
2月前
|
存储 C++
【C++】多态(重写)的实现过程及其原理【核心知识点精讲】(22)
【C++】多态(重写)的实现过程及其原理【核心知识点精讲】(22)
|
10月前
|
Java 编译器
谈谈接口 0.0
在现实生活中,接口的例子比比皆是,比如:笔记本上的USB口,电源插座等... 电脑的USB口上,可以插:U盘、鼠标、键盘...所有符合USB协议的设备。 电源插座插孔上,可以插:电脑、电视机、电饭煲... 接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用! 那么在java中怎么定义接口呢? 在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型。
45 0
|
2月前
|
设计模式 安全 算法
【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]
【C++入门到精通】特殊类的设计 | 单例模式 [ C++入门 ]
23 0
|
3天前
|
前端开发 JavaScript 程序员
一文搞懂:关于Defferred对象知识详解
一文搞懂:关于Defferred对象知识详解
|
24天前
|
Java
继承基础知识
继承基础知识
8 0
|
9月前
|
设计模式 安全 C++
C++进阶 特殊类的设计
C++进阶 特殊类的设计
27 0
类和对象的知识点补充
类和对象的知识点补充
|
编译器 C++
使用类知识点总结
使用类知识点总结
55 0
|
Java
接口(忽略的知识点)
接口属性 只能是final的,而且是public static final修饰符 比如int a=10; 其实上是public static final int a=10;
47 0