新微赢技术网

标题: 求助几个C++的概念问题 [打印本页]

作者: Yaci    时间: 2009-11-3 01:34
标题: 求助几个C++的概念问题
1。一个类有一个无参构造函数和一个有参构造函数,那可不可以在无参构造函数里面调用有参构造函数。
2。覆盖和重载的区别。
3。在哪些情况下必须调用构造函数。
作者: 十六夜的月    时间: 2009-11-3 01:34
的确很概念!
作者: Nick    时间: 2009-11-3 01:34
我还没学到呢!不好意识啊
作者: 阳光aiq浪子    时间: 2009-11-3 01:34
太难了,
作者: 林枫    时间: 2009-11-3 01:35
重载是override吧?覆盖的英文是什么?
作者: aiq無奈tx    时间: 2009-11-3 01:35
重载和覆盖不是同一个概念
不要误人子弟
作者: 冰rose冰    时间: 2009-11-3 01:35
1。一个类有一个无参构造函数和一个有参构造函数,那可不可以在无参构造函数里面调用有参构造函数。
不行
因为你的构造函数就是在执行类的定义,再还没有定义完全的时候又开始另一种重载定义,定义是不能递归自己的
3.在你的数据成员有指针等需要分配堆区间时(PNEW/DELETE),需要自己写,要不系统自动浅拷贝.而浅拷贝只能拷贝它的数值.
如果没有分配堆区间的动作系统的默认拷贝就能完成.
2.第二个没学呢.不知道覆盖
作者: ﹎想埝祢⿰    时间: 2009-11-3 01:35
我说的第3个问题是什么时候必须调用构造函数,我知道有一种情况是当有引用数据成员时,因为引用成员必须在定义的时候就初始化,所以这种情况必须调用构造函数,这和拷贝构造函数不是一回事
作者: 妈妈猪的一天    时间: 2009-11-3 01:35
以下是引用sherbin在2006-4-20 12:32:00的发言:
1。一个类有一个无参构造函数和一个有参构造函数,那可不可以在无参构造函数里面调用有参构造函数。
2。覆盖和重载的区别。
3。在哪些情况下必须调用构造函数。
1、在无参数构造函数中调用有参构造函数,那么有参构造函数的参数何来?
2、覆盖有时也被称为改写(override),覆盖是指对某一个函数的完全复写,包括返回值、参数名和参数表,如果其实现没有区别,那么这种覆盖就没有任何意义了,覆盖只能出现在子类继承父类并实现其虚拟函数时出现。重载(voerloaded)则要求函数的参数表必须有变化否,以使得同名函数表现出不同的处理功能。这种情况即可出现在父子继承关系中,也可出现在同一个类或不同的多个类中。两者都被称作是多态,也可以这样说覆盖是重载一种特殊情况。两者最重要的区别是,重载通常是在编译时解析的,是静态的;而改写则是一种运行时机制,即对于一个给定的调用,可能无法预言其将会执行何种行为,而只有到程序实际运行的时候才能对其进行确定。
3、你这个问题问得不是很明确,在任何情况下编译器都会为你调用构造函数。即使你没有显示的写出默认构造函数,编译器也会为你强行加入一个构造函数,以便在运行的时候调用。应该说,当你需要按照你要求的方式构造某个对象时,必须调用显示的调用有参构造数初始始化你的对象。这完全取决于你自己。
作者: 城市之肺    时间: 2009-11-3 01:35
恩,也就是说,覆盖只能是基类和派生类之间同过虚函数才能产生的。函数声明必须一样,函数定义却应该不一样(要不然覆盖也就失去了意义)。而函数重载(任何地方都可以重载函数,只要你确实需要)则要求必须是函数声明中,函数名一样,函数的参数类型或数量不同。至于定义可以相同,也可不相同。




欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2