| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 564 人关注过本帖
标题:各位高手,帮我看看这个代码运行结果呗~~~
取消只看楼主 加入收藏
sunflower44
Rank: 1
等 级:新手上路
帖 子:23
专家分:1
注 册:2011-8-15
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:5 
各位高手,帮我看看这个代码运行结果呗~~~
#include<iostream>
using namespace std;
class ONE{
    int c;
public:
    ONE():c(0){cout<<1;}
    ONE(int n):c(n){cout<<2;}
};
class TWO{
    ONE one1;
    ONE one2;
public:
    TWO(int m):one2(m){cout<<3;}
};
int main(){
    TWO t(4);
    return 0;
}
搜索更多相关主题的帖子: class public 
2011-08-15 20:17
sunflower44
Rank: 1
等 级:新手上路
帖 子:23
专家分:1
注 册:2011-8-15
收藏
得分:0 
米人理我。。。。。。哎
2011-08-15 20:25
sunflower44
Rank: 1
等 级:新手上路
帖 子:23
专家分:1
注 册:2011-8-15
收藏
得分:0 
回复 3楼 hoy0a1d
为什么会有那个1呢?
2011-08-15 23:05
sunflower44
Rank: 1
等 级:新手上路
帖 子:23
专家分:1
注 册:2011-8-15
收藏
得分:0 
回复 5楼 xg5699
#include<iostream>
using namespace std;
class ONE{
    int c;
public:
    ONE():c(0){cout<<1;}
    ONE(int n):c(n){cout<<2;}
};
class TWO{
    ONE one1;
    ONE one2;
public:
    TWO(int m):one2(m){cout<<3;}
};
int main(){
    TWO t(4);
    return 0;
}


我写一下这个程序运行的整个过程,帮我看下到底是哪一步有问题?

第一种过程:
由于TWO类中有子对象one1和one2,所以要先对t调用类ONE的构造函数。由于t被初始化为4,所以调用ONE带参数的构造函数,输出2.然后调用TWO的构造函数,把one2初始化为4,输出3.整个一来输出的结果是23.(这是我第一次的做题思路)

第二种过程:
由于TWO类中有子对象one1和one2,所以要先调用类ONE的构造函数,对one1和one2进行初始化。one1和one2均不带参,所以调用 ONE():c(0){cout<<1;},输出11,接下来调用TWO的构造函数,把one2初始化为4,输出3.这样结果就是113.
 
我上机试过了,结果确实是123.上面的程序过程错在哪里?能说一下正确的运行顺序吗?


2011-08-17 08:56
sunflower44
Rank: 1
等 级:新手上路
帖 子:23
专家分:1
注 册:2011-8-15
收藏
得分:0 
回复 8楼 zhoufeng1988
我觉得也没用到拷贝构造函数啊,只不过是普通的构造函数而已。多了对子对象的初始化过程
2011-08-17 09:42
sunflower44
Rank: 1
等 级:新手上路
帖 子:23
专家分:1
注 册:2011-8-15
收藏
得分:0 
回复 9楼 zhoufeng1988
2)one2。调用带有一个int参数的构造函数,输出2。
为什么调用带int参数的构造函数?
class TWO{
    ONE one1;
    ONE one2;

不是one2也不带参吗?



2011-08-17 09:47
快速回复:各位高手,帮我看看这个代码运行结果呗~~~
数据加载中...
 
   



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

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