NTUEE113HW 板


LINE

先感谢一下REPO的帮助!!只是我还有一点疑惑,还请多多包涵Orz.... ※ 引述《seanlatias (小赖)》之铭言: 有问题的code: (请善用置底文标色功能) #include <iostream> using namespace std; class AA { public: AA() { printf("1"); } virtual void F1() { printf("2"); } void F2() { printf("3"); } ~AA() { printf("4"); } }; class BB : public AA //BB继承AA { public: BB() { printf("5"); } virtual void F1() { printf("6"); } void F2() { printf("7"); } ~BB() { printf("8"); } }; int main() { AA v1; // 1 v1.F1(); // 2 v1.F2(); // 3 BB v2; // 4 v2.F1(); // 5 v2.F2(); // 6 AA *v3 = new BB(); // 7 v3->F1(); // 8 v3->F2(); // 9 delete v3; // 10 BB *v4; // 11 // v4->F1(); // 12,不能执行 v4->F2(); // 13 BB *v5 = new BB(); // 14 v5->F1(); // 15 v5->F2(); // 16 delete v5; // 17 system ("pause"); return 0; } 说明: 这是某位大大的PO文,可是有些问题还是不太懂想请教一下 先是注解编号4,7,14,因为我学到的是继承的derived class不会自动继承base class 的constructor,也就是只显示“5”,可是为何显示“15”? 虽然不会继承但是会呼叫到 可是课本上都是用member initializer去呼叫,这样不会重覆吗?(实际测试不会) 再来就是注解10,delete V3时,因为V3指向的是BB的object,所以照理说应该会显示 “8”,可是结果却显示“4”,我只知道没有virtual的function会执行base class的 但是为何destructor也这样?难道要把destrucor也virtual?(好像不行)但是 constructor却是有执行derived class的啊…… 因为宣告的是AA的pointer啊! 如果有呼叫constructor就会呼叫destructor,那应该也会呼叫BB的destructor啊@@ 还有注解13,v4明明没有指向任何object但是为何会印出“7”?是virtual的关系? 那virtual不就和static效果一样了?另外我在试的时候virtual和static不可以同时加 是否也是这个原因?? 我家的不能compile耶! 请问你是用VC?还是DevC++? 最後就是程式结束的时候,照理说注解17只会印出“8”却印出了“84”…… 在system("pause")後也印出了“844”……本以为destroy v2和v1时只会印出84…… 有呼叫constructor就会呼叫destructor -- 我宁以顷刻短暂的繁华,换取千年无尽的落寞。 欢迎大家上我的“部落格”:http://coldstar.5d6d.com/forum-2-1.html --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.241.120
1F:推 seanlatias:针对第一个问题,课本上是说用member intializer。但是 01/12 22:11
2F:→ seanlatias:我想如果没有member initializer就会主动呼叫base cons 01/12 22:12
3F:→ seanlatias:tructor 01/12 22:12
4F:→ WGL:个人是认为如果base constructor有要传入东西就不会自动呼叫吧 01/12 22:15
5F:→ seanlatias:第二个问题,我更正一下我的说法好了 01/12 22:15
6F:→ seanlatias:可以试试 01/12 22:16
7F:→ seanlatias:我猜程式会出问题 01/12 22:16
8F:→ seanlatias:的确,会出问题(不能compile) 01/12 22:26
9F:→ WGL:TO楼上:可是CandCPP版上的人说有virtual destructor这种东西. 01/12 22:47
10F:→ WGL:如果你说的是base constructor那个,的确会出问题 01/12 22:48
11F:→ WGL:-In constructor `BB::BB(int)': 01/12 22:49
12F:→ WGL:-no matching function for call to `AA::AA()' 01/12 22:49
13F:→ WGL:它还是会忠实地自动呼叫= = 01/12 22:50







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP