VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1123|回复: 10

构造函数的高级应用

[复制链接]
38_avatar_middle
最佳答案
0 
online_vip 发表于 2017-10-26 22:56:40 | 显示全部楼层 |阅读模式
为什么会输出三个BClass()呢,构造的顺序是怎么样的?

#include<iostream>
#include<stdlib.h>

using namespace std;
class BClass{
public:
        BClass(int a){ cout << "BClass()" << endl; n = a; }
        virtual void show(){ cout << "BClass::show()" << endl; cout << n << endl; }
        ~BClass(){ cout << "~Base()" << endl; }
protected:
        int n;
};

class SClass :public BClass{
        BClass base;
        int m;
public:
        SClass(int a,int b, int c) :BClass(a), base(b){
                cout << "SClass()" << endl;
                n = b; m = c;
        }
        void show(){
                cout << "Sclass::Show()" << endl;
                cout << n << "," << m << endl;
        }
        ~SClass(){ cout << "~SClass()" << endl; }
};

int main(){
        SClass s(1, 2, 3);
        BClass *p = &s;
        p->show();
        system("pause");
        return 0;
}
1.png




上一篇:如何使用SWFToImage.DLL 将swf 文件转换成图片
下一篇:请问怎么获取 WebBrowser JS 提交返回的内容
08_avatar_middle
最佳答案
0 
在线会员 发表于 2017-10-27 21:17:53 | 显示全部楼层
class BClass{
public:
        BClass(int a){ cout << "BClass()" << endl; n = a; }
        virtual void show(){ cout << "BClass::show()" << endl; cout << n << endl; }
        ~BClass(){ cout << "~Base()" << endl; }
protected:
        int n;
};
//第一个初始化

class SClass :public BClass{
        BClass base;//第二个初始化
        int m;
public:
        SClass(int a,int b, int c) :BClass(a), base(b){
                cout << "SClass()" << endl;
                n = b; m = c;
        }
        void show(){
                cout << "Sclass::Show()" << endl;
                cout << n << "," << m << endl;
        }
        ~SClass(){ cout << "~SClass()" << endl; }
};//第三个初始化。

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
38_avatar_small 2191265529 + 2 + 2 很给力!

查看全部评分

07_avatar_middle
最佳答案
0 
在线会员 发表于 2017-10-28 19:48:20 | 显示全部楼层
我晕,一开始被楼主的标题误导了,只输出了两个BClass,第三个是SClass。害我傻傻的分析了半天。发现BClass怎么着都只会出现两次啊,哈哈
08_avatar_middle
最佳答案
0 
在线会员 发表于 2017-10-29 13:20:30 | 显示全部楼层
freehawkzk 发表于 2017-10-28 19:48
我晕,一开始被楼主的标题误导了,只输出了两个BClass,第三个是SClass。害我傻傻的分析了半天。发现BClass ...

对的。我早就已经发现他的标题有问题了
75_avatar_middle
最佳答案
0 
在线会员 发表于 2017-11-3 13:59:33 | 显示全部楼层
的点点滴滴多多多多多多多多多多
38_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2017-11-3 17:40:31 | 显示全部楼层
SummerGull 发表于 2017-10-29 13:20
对的。我早就已经发现他的标题有问题了

哥,我自己都没发现问题构造函数的高级应用
08_avatar_middle
最佳答案
0 
在线会员 发表于 2017-11-3 22:30:55 | 显示全部楼层
2191265529 发表于 2017-11-3 17:40
哥,我自己都没发现问题

C++ primer plus 看了哇?这本书 挺好的 不过感觉 讲的还有遗漏 在看本范磊的 就差不多了
38_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2017-11-6 22:00:28 | 显示全部楼层
SummerGull 发表于 2017-11-3 22:30
C++ primer plus 看了哇?这本书 挺好的 不过感觉 讲的还有遗漏 在看本范磊的 就差不多了

哈哈,看了好多书了,经验不足,感谢大佬带飞啊构造函数的高级应用
14_avatar_middle
最佳答案
0 
online_vip 发表于 2017-11-14 16:02:53 | 显示全部楼层
你好,有没有读写记事本的MFC实例,给我一份 754045616@qq.com
75_avatar_middle
最佳答案
0 
在线会员 发表于 2017-11-18 16:48:46 | 显示全部楼层
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-11-22 09:15

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表