【C++】类和对象补充

本文详细介绍了C++中的构造函数,包括函数体内赋初值和初始化列表,强调了初始化列表的重要性。接着讲解了static成员,包括概念和特性,并给出了示例。然后探讨了友元,包括友元函数和友元类,以及它们对封装的影响。最后,文章提到了内部类的概念和特性,指出内部类可视为外部类的友元。
摘要由CSDN通过智能技术生成

一. 再看构造函数

我们之前已经了解了构造函数的基本内容,那么这里我们将深入认识构造函数。

1.函数体内赋初值

class Date
{
   
public:
 Date(int year, int month, int day)
 {
   
 _year = year;
 _month = month;
 _day = day;
 //可以进行多次赋值,但一般不这么做
 _year = 1;
 }
 
private:
 int _year;
 int _month;
 int _day;
};

首先,对于构造函数体内的赋值我们不能称之为初始化。首先我们要理解:初始化只能初始化一次,而构造函数体内可以多次赋值。那么对象成员变量的初始化是在什么时候进行的呢?这就要接下来要介绍的初始化列表要做的事了。

2.初始化列表

初始化列表是以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。其形式如下:

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

几点注意

  1. 每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次)
  2. 类中包含以下成员,必须放在初始化列表位置进行初始化:
    (1)const成员变量:由于const变量初始化之后就不能更改,因此需在初始化列表进行初始化。
    (2)引用成员变量:引用成员变量只能作为一个变量的引用,一旦初始化,就不能再作为其他变量的引用,因此引用变量也只能再初始化列表初始化。
    (3)自定义类型成员变量(没有默认构造函数情况下):由于没有默认构造函数时,自定义类型变量是不能初始化的,此时程序也无法编译,因此没有默认构造函数的自定义类型成员变量必须在初始化列表进行初始化。
class B
{
   
public:
	B(int i)
		:_i(i)
	{
   

	}
private:
	int _i;
};

class A
{
   
public:
	A(int a, int& b, int bb)
		:_a(a)
		,_b(b)
  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值