类和对象(下) (初始化列表,static成员函数,友元函数,内部类详解)

本文深入探讨C++中的类,包括初始化列表的使用、static成员的特性、友元函数和类的作用,以及内部类的概念和特点。重点讲解了初始化列表的重要性,static成员的存储区域,友元如何访问私有成员,以及内部类对外部类的特殊访问权限。
摘要由CSDN通过智能技术生成

目录

前言

一、初始化列表

1.再谈构造函数

2.初始化列表特征

3.explict关键字

二、static成员

三、友元

1.友元函数

2.友元类

四、c++11初始化成员特性

五、内部类

总结


前言

哈喽,大家好,本章是类和对象的下篇,学完这一篇,那我们关于类和对象的概念就掌握的差不多啦,那话不多说,让我们快点开始吧。


提示:以下是本篇文章正文内容,下面案例可供参考

一、初始化列表

1.再谈构造函数

上一篇我们讲到了,在创建对象时,编译器通过调用构造函数,给成员变量赋初值。但你可能不知道,除了使用构造函数,还有其他途径可以对成员变量进行初始化,那就是初始化列表,它和构造函数有什么共同点和区别呢,让我们一起来看看吧。

2.初始化列表特征

初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。卸载构造函数的参数和大括号之间。

public:
	Date(int year, int month, int day)
		: _year(year)
		, _month(month)
		, _day(day)
	{}
private:
	int _year;
	int _month;
	int _day;
};

注意:

1.每个成员变量在初始化列表中只能出现一次(初始化只能进行一次)

2.类中包含以下成员,必须放到初始化列表进行初始化

(1)引用成员变量

(2)const成员变量

(3)自定义类型成员变量(该类没有默认的构造函数)

这三种类型有个共同点,都需要在定义时进行初始化(自定义类型变量需要调用构造函数)。我们可以理解为类中的成员变量是在初始化列表中完成定义的,所以以上三种成员必须放到列表中进行初始化,来保证定义和初始化同时进行。

3.尽量使用初始化列表

在类中,我们想要给成员变量赋初值,用构造函数和初始化列表都能实现。但最好用初始化列表,因为初始化列表在某些情况下可以节约时间。

(1)对于内置类型,使用初始化列表和构造函数没有什么区别

(2)对于自定义类型,使用初始化列表效率更高。

class Time
{
public:
	Time(int hour = 0)
		:_hour(hour)
	{
		cout << "Time()" << endl;
	}
private:
	int _hour;
};



class Date
{
public:
	// 自定义类型,使用初始化列表 -》 构造函数
	/*Date(int day, int hour)
		:_t(hour)
	{}*/

	// 自定义类型,不使用初始化列表 -》 构造函数 + 
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值