Redian新闻
>
关于构造函数的一道测试题 (转载)
avatar
关于构造函数的一道测试题 (转载)# Programming - 葵花宝典
g*s
1
【 以下文字转载自 JobHunting 讨论区 】
发信人: gandjmitbbs (Nothing), 信区: JobHunting
标 题: 关于构造函数的一道测试题
发信站: BBS 未名空间站 (Sun Dec 16 02:42:51 2007)
class Foo{
public:
//Foo(){}
Foo(int i){}
};
class Bar: Foo {
public:
Bar(){}
};
Bar objBar;
问编译是否能通过?如果不能如何修正?
自己试了一下,说没有合适的Foo默认构造函数可用。将那行注释关掉就行了。但是编
译器不是应该自动生成一个Foo::Foo(){}吗?
avatar
P*e
2
你没有ctor的时候,compiler才帮你弄一个
既然你已经有了

【在 g*********s 的大作中提到】
: 【 以下文字转载自 JobHunting 讨论区 】
: 发信人: gandjmitbbs (Nothing), 信区: JobHunting
: 标 题: 关于构造函数的一道测试题
: 发信站: BBS 未名空间站 (Sun Dec 16 02:42:51 2007)
: class Foo{
: public:
: //Foo(){}
: Foo(int i){}
: };
: class Bar: Foo {

avatar
g*s
3
我有的那个不是default啊。难道只要我有任意一个自定义构造函数,编译器就放弃自
动生成吗?为何要这样设计呢?像这个例子,编译器完全可以推断出没有默认构函然后
自动生成啊。

【在 P********e 的大作中提到】
: 你没有ctor的时候,compiler才帮你弄一个
: 既然你已经有了

avatar
r*y
4
编译器怎么知道你不是忘了输入参数了?
编译器要考虑很多情况的

【在 g*********s 的大作中提到】
: 我有的那个不是default啊。难道只要我有任意一个自定义构造函数,编译器就放弃自
: 动生成吗?为何要这样设计呢?像这个例子,编译器完全可以推断出没有默认构函然后
: 自动生成啊。

avatar
n*g
5
class Bar: Foo {
public:
Bar():Foo(5){} // 先构造Foo的对象,编译器找不到没有参数的构造函数。在子
类的构造函数后面加上父类带参数的构造函数就行了
};
Bar objBar;

【在 g*********s 的大作中提到】
: 【 以下文字转载自 JobHunting 讨论区 】
: 发信人: gandjmitbbs (Nothing), 信区: JobHunting
: 标 题: 关于构造函数的一道测试题
: 发信站: BBS 未名空间站 (Sun Dec 16 02:42:51 2007)
: class Foo{
: public:
: //Foo(){}
: Foo(int i){}
: };
: class Bar: Foo {

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。