标题:[求助]关于静态成员的问题
只看楼主
ysol
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-6-11
得分:0 

带有参数的就不能称为默认构造了阿!!!嘿嘿一个绕圈的问题!!!

2006-07-09 20:10
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 

昏。class A{A(int a=0);};
A::A(int a){}
这也是默认构造函数


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-07-09 20:27
ysol
Rank: 1
等 级:新手上路
帖 子:107
专家分:0
注 册:2006-6-11
得分:0 
哈哈那个叫自定义构造函数,或者叫有参构造,默认构造函数有的书上又成为默认无参构造函数嘿嘿。
2006-07-09 20:51
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 

你不信算了,这的确是默认构造函数


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-07-09 21:06
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
所谓默认构造函数,是指在定义一个对象的时候,不需要给其传递参数(A a;),这就叫默认构造函数。

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-07-09 21:07
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
得分:0 
以下是引用ysol在2006-7-9 17:58:06的发言:

貌似编译器会给出警告!但是不会报错,认为返回类型为void.
你说的除析构函数外的那个函数 会不会是 默认构造函数???

不一定,例如dev 你要不写返回值,默认int
好象vc++有的情况下默认是void
默认构造函数不是人们写的,是系统带的
我想问下,除了析构函数以外,还有哪个函数不能有参数,而且可以不写返回类型,但是这个函数却有返回值~!
这是我们C++期末考试的一道题~我想了半天还是没想到
构造函数就是你说的
当你写完时,代码生成器会把它变成这样 this A(A this,int .....)
返回this指针
还有一个我忘了,想不起来了。不常用哦,回去给你找找


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-07-10 09:34
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
得分:0 
以下是引用ysol在2006-7-9 19:46:18的发言:

是的,默认构造函数是不能有参数的,但是可以被重载!!!也可以含有参数但是就不叫默认构造函数了,嘿嘿

这是什么话??


嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2006-07-10 09:36
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
构造函数就是你说的
当你写完时,代码生成器会把它变成这样 this A(A this,int .....)
返回this指针

但是他不是“不能有参数”啊~!!!!
要求是该函数不能有参数

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-07-10 10:31
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
得分:0 
[QUOTE]
我想问下,除了析构函数以外,还有哪个函数不能有参数,而且可以不写返回类型,但是这个函数却有返回值~!
这是我们C++期末考试的一道题~我想了半天还是没想到[/QUOTE]

是不是类型转换函数?


[CODE]#include <iostream>

class tiny
{
char v;
void assign(int i) { if( i&(~63) ) throw bad_range(); v=i; }
public:
class bad_range {};
tiny() { v=0; }
tiny(int i) { assign(i); }
tiny& operator=(int i) { assign(i); return *this; }
//......
//......
operator int() { return v; } //tiny类型转换为int
};

using namespace std;

int main(int argc, char *argv[])
{
tiny a;
int b = 20;

a = 50;

b = a;

cout<<b<<endl;

system("PAUSE");
return EXIT_SUCCESS;
}[/CODE]

2006-07-10 16:36
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 

to woodhead:
是的。 我就是想的这个,就是不记得名字,在论坛以前看过,是个double的。


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-07-10 17:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-77397-1-1.html




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

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