构造函数 (C++)

您所在的位置:网站首页 获取数据成员的函数有哪些方法 构造函数 (C++)

构造函数 (C++)

2024-07-16 18:26:25| 来源: 网络整理| 查看: 265

构造函数 (C++) 项目04/03/2023

若要自定义类初始化其成员的方式,或是如要在创建类的对象时调用函数,请定义构造函数。 构造函数具有与类相同的名称,没有返回值。 可以定义所需数量的重载构造函数,以各种方式自定义初始化。 通常,构造函数具有公共可访问性,以便类定义或继承层次结构外部的代码可以创建类的对象。 但也可以将构造函数声明为 protected 或 private。

构造函数可以选择采用成员初始化表达式列表。 与在构造函数主体中赋值相比,初始化类成员是更高效的方式。 以下示例演示具有三个重载构造函数的类 Box。 最后两个构造函数使用成员初始化列表:

class Box { public: // Default constructor Box() {} // Initialize a Box with equal dimensions (i.e. a cube) explicit Box(int i) : m_width(i), m_length(i), m_height(i) // member init list {} // Initialize a Box with custom dimensions Box(int width, int length, int height) : m_width(width), m_length(length), m_height(height) {} int Volume() { return m_width * m_length * m_height; } private: // Will have value of 0 when default constructor is called. // If we didn't zero-init here, default constructor would // leave them uninitialized with garbage values. int m_width{ 0 }; int m_length{ 0 }; int m_height{ 0 }; };

声明类的实例时,编译器会基于重载决策选择要调用的构造函数:

int main() { Box b; // Calls Box() // Using uniform initialization (preferred): Box b2 {5}; // Calls Box(int) Box b3 {5, 8, 12}; // Calls Box(int, int, int) // Using function-style notation: Box b4(2, 4, 6); // Calls Box(int, int, int) } 构造函数可以声明为 inline、explicit、friend 或 constexpr。 构造函数可以初始化一个已声明为 const、volatile 或 const volatile 的对象。 该对象在构造函数完成之后成为 const。 若要在实现文件中定义构造函数,请为它提供限定名称,如同任何其他成员函数一样:Box::Box(){...}。 成员初始化表达式列表

构造函数可以选择具有成员初始化表达式列表,该列表会在构造函数主体运行之前初始化类成员。 (成员初始化表达式列表与类型为 std::initializer_list 的初始化表达式列表不同。)

首选成员初始化表达式列表,而不是在构造函数主体中赋值。 成员初始化表达式列表直接初始化成员。 以下示例演示了成员初始化表达式列表,该列表由冒号后的所有 identifier(argument) 表达式组成:

Box(int width, int length, int height) : m_width(width), m_length(length), m_height(height) {}

标识符必须引用类成员;它使用参数的值进行初始化。 参数可以是构造函数参数之一、函数调用或 std::initializer_list。

const 成员和引用类型的成员必须在成员初始化表达式列表中进行初始化。

若要确保在派生构造函数运行之前完全初始化基类,请调用初始化表达式列表中的任何参数化基类构造函数。

默认构造函数

默认构造函数通常没有参数,但它们可以具有带默认值的参数。

class Box { public: Box() { /*perform any required default initialization steps*/} // All params have default values Box (int w = 1, int l = 1, int h = 1): m_width(w), m_height(h), m_length(l){} ... }

默认构造函数是特殊成员函数之一。 如果类中未声明构造函数,则编译器提供隐式 inline 默认构造函数。

#include using namespace std; class Box { public: int Volume() {return m_width * m_height * m_length;} private: int m_width { 0 }; int m_height { 0 }; int m_length { 0 }; }; int main() { Box box1; // Invoke compiler-generated constructor cout


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭