C++类与对象的理解(二)

上一节,我们讲了类与对象的概念,但是涉及到了类的初始化。
类的初始化其实就是指类成员的赋值。

一、类成员赋值的几种方法

1.直接初始化

在类的结构中,直接对成员进行初始化,有一个前提:前提就是所有的数据成员都是公有的,且没有声明任何构造函数。
有的人可能会想问为什么不能声明构造函数,具体,我们可以通过代码来验证。

数据成员定义为公有,并声明构造函数–代码块无错误提示,编译报错。
#include<iostream>
using namespace std;
class  CA
{
    
    
public:
	 CA();//代码块,无错误提示,编译报错。
	~ CA();
public:
	int m_num;

};


int main()
{
    
    
	CA ca;
	ca.m_num = 1;//直接初始化
	return 0;
}

运行结果:
在这里插入图片描述

数据成员定义为公有,无构造函数–代码块无错误提示,编译成功。
#include<iostream>
using namespace std;
class  CA
{
    
    
public:
	//成员函数;
public:
	int m_num;

};


int main()
{
    
    
	CA ca;
	ca.m_num = 1;//直接初始化
	return 0;
}

运行结果:
在这里插入图片描述

注意:但是我们通常不建议在类的结构里面去直接初始化数据成员,更多的是通过构造函数、公有的成员函数、以及成员初始化列表进行初始化。

2.构造函数初始化

#include<iostream>
using namespace std;
class CA
{
    
    
public:
//构造函数
	CA(int a)
	{
    
    
		this->m_num = a;
	}
//实现了构造函数后,一定要记得实现析构函数,否则报错
	~CA()
	{
    
    

	}
//公有的函数-验证是否成功初始化
	int Getnum()
	{
    
    
		return this->m_num;
	}
private:
	int m_num;

};

//程序入口
int main()
{
    
    
	CA ca(1);//创建时,在类对象后加括号,括号里面加实参即可实现构造函数初始化
	cout << ca.Getnum() << endl;
	return 0;
}

运行结果:
在这里插入图片描述
注意:实现了构造函数后,一定要记得实现析构函数,否则报错,析构函数的逻辑可以为空,但不能仅为声明

3.成员初始化列表初始化

#include<iostream>
using namespace std;
class CA
{
    
    
public:
	//第一种:成员初始化列表进行初始化
	CA() :m_num(1)
	{
    
    }
	//第二种:成员初始化列表进行初始化
	CA(int a) :m_num(a)
	{
    
    

	}
	~CA()
	{
    
    

	}
	int Getnum()
	{
    
    
		return this->m_num;
	}
private:
	int m_num;

};


int main()
{
    
    
	CA ca;
	cout << ca.Getnum() << endl;
	CA ca1(6);
	cout << ca1.Getnum() << endl;
	return 0;
}

运行结果:
在这里插入图片描述

4.公有函数初始化

#include<iostream>
using namespace std;
class CA
{
    
    
public:
	CA()
	{
    
    

	}
	~CA()
	{
    
    

	}
	//通过公有的成员函数来对成员进行初始化
	void Setnum(int a)
	{
    
    
		this->m_num = a;
	}
	//获取成员的值并返回--验证是否成功进行初始化
	int Getnum()
	{
    
    
		return this->m_num;
	}
private:
	int m_num;

};


int main()
{
    
    
	CA ca;
	ca.Setnum(8);//类对象调用公有成员函数,对成员进行初始化
	cout << ca.Getnum() << endl;//类对象调用Get方法,验证是否进行初始化
	return 0;
}

运行结果:
在这里插入图片描述

关于C++的学习,欢迎大家关注我,对我的文章进行评论,点赞,收藏,关注我不迷路。也欢迎广大网友跟我探讨C++的干货。C++的知识,远远不止这么点,我们一 一进行分析讲解。网友有什么想让我来进行讲解的,可以评论留言,我也会尽我所能给大家去做好讲解。

作者:ProMer_Wang

链接:https://blog.csdn.net/qq_43801020/article/details/106880711

本文为ProMer_Wang的原创文章,著作权归作者所有,转载请注明原文出处,欢迎转载!

猜你喜欢

转载自blog.csdn.net/qq_43801020/article/details/106880711