| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 543 人关注过本帖
标题:百思不得其解
只看楼主 加入收藏
virtualperson
Rank: 1
来 自:时光尽头
等 级:新手上路
帖 子:428
专家分:1
注 册:2008-10-22
结帖率:100%
收藏
 问题点数:0 回复次数:3 
百思不得其解
#include<iostream>
using namespace std;

class B1{
public:
    B1(int i){
        cout<<"constructing B1:"<<i<<endl;
    }
};

class B2{
public:
    B2(int i){
        cout<<"constructint B2:"<<i<<endl;
    }
};

class B3{
public:
    B3(){
        cout<<"constructing B3:@"<<endl;
    }
};

class C:public B1,public B2,public B3{
    B1 member1;
    B2 member2;
    B3 member3;
public:
    C(int a,int b,int c,int d):B2(b),member2(d),B1(a),member1(c){}
};

int main(int argc,char* argv[]){
    C c(1,2,3,4);
    system("pause");
    return 0;
}

请指教本程序的详细运行过程。谢谢!
搜索更多相关主题的帖子: 百思不得其解 
2009-09-12 18:53
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:0 
我想应该是这样的,类C多重继承了类B1,B2,B3。
B1,B2的构造函数都带参数,类B3的构造函数则没有带参数。B2(b),B1(a)用来初始化公有继承过来的那部分数据,member2(d),member1(c)用来初始化自己的公有数据成员。
类B3的构造函数则没有带参数,所以不用显示调用B3(),member3()。

迭代的是人,递归的是神。
2009-09-13 17:10
newCpp
Rank: 5Rank: 5
来 自:火星
等 级:职业侠客
威 望:3
帖 子:256
专家分:375
注 册:2009-8-17
收藏
得分:0 
这程序太复杂了!
我也看到类方法有点儿晕了。不过这程序大概意思前面的几句我能采的差不多,最后几句我也不知道啥意思了!
怕误你前途,就不说我自己的见解了!!

编程语言视频教程在线播放学习
2009-09-13 19:40
kxalpah
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:21
专家分:124
注 册:2009-9-14
收藏
得分:0 
C(int a,int b,int c,int d):B2(b),member2(d),B1(a),member1(c){}
后面部分为成员初始化列表
因为C为继承类,所以初始化C是会先初始化基类,然后初始化派生类的参数,如没有则按照默认值来进行初始化
从运行结果来看是从右向左开始的,所以执行顺序为B1(a),B2(b),B3(),member1(c),member2(d),member3();

2009-09-17 18:21
快速回复:百思不得其解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016046 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved