zoukankan      html  css  js  c++  java
  • 向上类型转换和拷贝构造函数

    /*向上类型转换和拷贝构造函数拷贝构造函数拷贝构造函数
    如果允许便以其为派生类生成拷贝构造函数,
    它将首先自动调用基类的拷贝构造函数,
    然后再是各成员对象的拷贝构造函数
    */
    #include <iostream>
    using namespace std;

    class Parent{
    int i;
    public:
    Parent(int ii):i(ii){
    cout << "Parent(int ii)\n";
    }
    Parent(const Parent& b):i(b.i){
    cout << "Parent(const Parent&)\n";
    }
    Parent():i(0){cout << "Parent()\n";}
    friend ostream& operator<<(ostream& os,const Parent& b){
    return os << "Parent: " << b.i << endl;
    }
    };

    class Member{
    int i;
    public:
    Member(int ii):i(ii){
    cout << "Member(int ii)\n";
    }
    Member(const Member& m):i(m.i){
    cout << "Member(const Member&)\n";
    }
    friend ostream& operator<<(ostream& os,const Member& m){
    return os << "Member: " << m.i << endl;
    }
    };
    class Child:public Parent{
    int i;
    Member m;
    public:
    Child(int ii):Parent(ii),i(ii),m(ii){
    cout << "Child(int ii)\n";
    }
    Child(const Child& c):Parent(c),i(c.i),m(c.m){//无论何时我们在创建自己的拷贝构造函数时,都要正确地调用基类拷贝构造函数
    cout << "Child(Child&)\n";
    }
    friend ostream& operator<<(ostream& os,const Child& c){
    return os << (Parent&)c << c.m
    << "Child: " << c.i << endl;
    }
    };

    int main(){
    Child c(2);
    cout << "calling copy-constructor: " << endl;
    Child c2 = c;
    cout << "Values in c2:\n" << c2;
    return 0;
    }

  • 相关阅读:
    第04组(64) 需求分析报告
    第04组(64) 团队展示
    结对编程作业
    Python单元测试框架 Unittest 的简单使用方法
    第一次个人编程作业
    第09组 Alpha冲刺 总结
    Swagger 工具集
    第09组 Alpha冲刺(6/6)
    第09组 Alpha冲刺(5/6)
    第09组 Alpha冲刺(4/6)
  • 原文地址:https://www.cnblogs.com/phoenixzq/p/1880128.html
Copyright © 2011-2022 走看看