zoukankan      html  css  js  c++  java
  • 拷贝构造函数与默认拷贝构造函数

    #include <iostream>
    #include <string.h>
    using namespace std;
    
    class Student
    {
    public:
    	Student(char *pName = "no name", int ssId = 0)
    	{
    		id = ssId;
    		strcpy(name,pName);
    		cout<<"constructing new student "<<name<<endl;
    	}
    	Student(Student &s)
    	{
    		cout<<"constructing copy of "<<s.name<<endl;
    		strcpy(name,"copy of ");
    		strcat(name,s.name);
    		id = s.id;
    	}
    	~Student()
    	{
    		cout<<"Destructing "<<name<<endl;
    	}
    protected:
    	char name[40];
    	int id;
    };
    
    void fn(Student s)
    {
    	cout<<"In function fn()\n";
    }
    
    class Tutor
    {
    public:
    	Tutor(Student &s):student(s)
    	{
    		cout<<"Construction tutor"<<endl;
    	}
    protected:
    	Student student;
    };
    
    /*
    调用默认拷贝构造函数,完成一个成员一个成员的拷贝.
    如果成员是类对象,则调用其拷贝构造函数或者默认拷贝构造函数
    */
    void fn2(Tutor tutor)
    {
    	cout<<"In function fn2()"<<endl;
    }
    
    void main()
    {
    	//Student randy("randy",1234);
    	//cout<<"Calling fn()"<<endl;
    	//fn(randy);
    	//cout<<"Returned from fn()"<<endl;
    
    	Student randy("randy",1234);
    	Tutor tutor(randy);
    	cout<<"Calling fn2()"<<endl;
    	fn2(tutor);
    	cout<<"Returned from fn2()"<<endl;
    
    }
    
  • 相关阅读:
    MySQL数据库设计规范
    Docker安装redis
    Go-用本地时间解析时间字符串
    Docker安装mysql
    docker安装es
    Json官网文档
    leetcode题目和解答集合
    76. 最小覆盖子串
    165. 比较版本号
    958. 二叉树的完全性检验
  • 原文地址:https://www.cnblogs.com/steady/p/1849210.html
Copyright © 2011-2022 走看看