啃书《C++ Primer Plus》 面向对象部分 构造函数基础及其使用 ——初始化列表 构造函数重载与调用 创建对象

啃书系列持续更新ing,关注博主一起xiao习鸭~

系列文章:
啃书《C++ Primer Plus》之 C++ 函数指针
啃书《C++ Primer Plus》之 C++ 名称空间1
啃书《C++ Primer Plus》之 C++ 名称空间2
啃书《C++ Primer Plus》之 C++ 引用
啃书《C++ Primer Plus》之 const修饰符修饰 类对象 指针 变量 函数 引用
啃书《C++ Primer Plus》之 枚举 内容大全
啃书《C++ Primer Plus》之 内存模型(上) 变量的存储持续性 作用域 连接性


这一节进入面向对象内容的第二部分,来探讨学习一个非常重要且特殊的成员函数:构造函数。

如果您还不知道构造函数是什么,那么可以简单的理解为:构造函数是用来构造对象函数,用来初始化对象内部的数据,常在一个对象产生的时候被调用,用于“构造”这个对象。当然,它也不仅仅是在初始化的时候被调用,当对象需要被重新构造,如在赋值的时候,它也会被调用,这点在下面的文章中会有所体现。

本文会先介绍有关构造函数的创建相关问题。在创建构造函数后,再来介绍有关构造函数的一些使用。
下面是本节的思维导图。
在这里插入图片描述

here we go~


创建构造函数

学习使用构造函数的第一步,当然是创建构造函数。

构造函数的声明与定义

首先,构造函数的位置应该在其所属的类中,其声明与定义的格式如下:

声明(类内):
	类名(参数列表);
实现(类外):
	类名::构造函数名(参数列表):初始化列表{};

可以看到,构造函数的声明与定义同一般的成员函数十分相近。在类内需要给出函数的形式,在类外实现时需要使用作用域解析符来表明从属关系。

通常,一个类的声明与定义我们分别写在头文件和对应的cpp文件中。现在,把它写成代码:

classA.h
class A
{
   
   
publicA(int);
private:
	int k;	
}
classA.cpp
#include"classA.h"
A::A(int k){
   
   this->k = k;}

当然,上面的程序对于构造函数的实现方式不是固定的,您也可以选择使用 inline 修饰。或者干脆将它直接写在声明处(通常不建议这么做,声明和定义应该分别放置在头文件和.cpp文件以降低可能存在的编译依赖)。

从上面的程序可以看到构造函数的一些特点:

  • 构造函数没有返回类型,也不能返回任何值
  • 构造函数的函数名就是类名
  • 构造函数受访问限制
  • 构造函数具有初始化列表用以初始化成员
  • 构造函数带有this指针

对于前两条这里不过多解释,他们是构造函数的硬性规定。

第三点说到了构造函数的访问权限,在上面的例子中,访问权限是 public 的,这意味着可以在类外直接调用它。但是如果我们将访问权限改为 private 那么就只能在类内部使用它,在类外则不能使用这个构造函数。

下面我们就来分析一下第四、第五点带来的内容。

构造函数的初始化列表

构造函数的初始化列表的形式与位置如下:

初始化列表形式: 成员1(初始化值),成员2(初始化值)...
初始化列表位置: 构造函数名称(参数列表):初始化列表{}

我们来举个粟子:

class B
{
   
   }class A
{
   
   
public:
	A(int k = 0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值