Loading

c++学习记录(五)

c++实践学习友元、构造、析构函数

参考文献 菜鸟教程

友元函数

类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员

构造函数

构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。

析构函数

析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数

实践要求:

(1)在代码中运用三个函数
(2)尝试一些不同的操作

代码展示

#include<iostream>
using namespace std;
class Try
{
public:
	Try()
	{
		cout << "测试友元函数以及构造、析构函数使用" << endl;
		length = 0;
		height = 0;
		weight = 0;
	}

	~Try()
	{
		cout << "测试结束" << endl;
	}

	friend void print(Try try2);


	void print2()
	{
		length += 5;
		weight += 3;
		height += 6;
		cout << "长宽高之积:" << length * height * weight << endl;
	}

private:
	int length;
	int height;
	int weight;
};

void print(Try try2)
{
	try2.length += 5;
	try2.weight += 3;
	try2.height += 6;
	cout << "长宽高之积:" << try2.length * try2.height * try2.weight << endl;
}

int main()
{
	Try try2;
	print(try2);
	try2.print2();
}

不同的操作

(1)将友元函数在类中声明并定义

class Try
{
public:
    friend void print(Try try2)
    {
        length += 5;
	weight += 3;
	height += 6;
	cout << "长宽高之积:" << length * height * weight << endl;
    }
};

结论:能成功定义输出

(2)将友元函数只在类中声明,在类外定义

class Try
{
public:
    friend void print(Try try2);
};
void print(Try try2)
{
    length += 5;
    weight += 3;
    height += 6;
    cout << "长宽高之积:" << length * height * weight << endl;
}

结论:能成功定义输出

实践中出现的问题

(1)声明类的对象时,例如定义class Try,再声明对象Try try;出现错误

结论:推迟原因可能为try是c++中的关键字,因此出现错误
(2)友元函数、类成员函数对类中成员进行操作似乎不会相互影响

【1】友元函数与类成员函数实践

	void print2()            //类成员函数
	{
		length += 4;
		weight += 5;
		height += 6;
		cout << "长宽高之积:" << length * height * weight << endl;
	}

    friend void print(Try try2)        //友元函数
    {
        length += 4;
	weight += 5;
	height += 6;
	cout << "长宽高之积:" << length * height * weight << endl;
    }

在main函数中调用结果

【2】两个类成员函数实践

	void print2()            //类成员函数
	{
		length += 4;
		weight += 5;
		height += 6;
		cout << "长宽高之积:" << length * height * weight << endl;
	}

	void print3()
	{
		length += 4;
		weight += 5;
		height += 6;
		cout << "长宽高之积:" << length * height * weight << endl;
	}

两个类成员函数结果显示

结论:推测友元函数与类成员函数对类中成员的操作互不影响,具体还等以后查找资料

总结:了解了c++的一些基础知识,还有大量的细节知识需要在实践中发现并处理。

posted @ 2020-02-05 22:57  洋洋羊羊  阅读(134)  评论(0编辑  收藏  举报