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

  • 相关阅读:
    监听本机tcp和udp的端口
    sysstat-----获取服务器负载历史记录
    inode索引详解
    tcpdump详解
    Windws Server 2008 R2 WEB环境配置之IIS7/IIS7.5+FastCGI+PHP 5.6.4+MYSQL+phpMyAdmin
    echo 命令
    带宽、流量、下载速度之间的换算
    windows 下解决 Time_Wait 和 CLOSE_WAIT 方法
    LNMP环境部署
    关于旅行
  • 原文地址:https://www.cnblogs.com/trainking-star/p/12267158.html
Copyright © 2011-2022 走看看