首页 > 编程语言 > 详细

c++学习记录(五)

时间:2020-02-05 23:24:11      阅读:74      评论:0      收藏:0      [点我收藏+]

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++的一些基础知识,还有大量的细节知识需要在实践中发现并处理。

c++学习记录(五)

原文:https://www.cnblogs.com/trainking-star/p/12267158.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!