| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 788 人关注过本帖
标题:构造函数初始化表问题
只看楼主 加入收藏
lixang
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2006-7-15
收藏
 问题点数:0 回复次数:7 
构造函数初始化表问题
tempalte<class T,class Alloc=alloc, size_t BufSize=0>
class deque
{
......................//构造函数 //初始化表
deque (int n,const value_type &value) :start (),finish(),map(0),map_size(0)
{...................................}
//start 是指针,finish是指针,map指针的指针
...................................................//上面对start 是指针赋值为()空括号是什么意思
//对指向指针的指针map赋值为0如何解释呢?
}

[此贴子已经被作者于2007-1-24 20:10:23编辑过]

搜索更多相关主题的帖子: 函数 构造 
2007-01-24 20:10
蓝鹰
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-8-26
收藏
得分:0 
deque (int n,const value_type &value) :start (),finish(),map(0),map_size(0)
{...................................} start ()表示不对start进行初始化,不写也可以,map赋值为0表示map不指向任何地址,为防止对不确定的map地址进行操作而使系统受到破坏,才用0赋值。

等同于:

deque (int n,const value_type &value) {
map=0;
map_size=0;
......
}
2007-01-24 22:54
tyc611
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-1-21
收藏
得分:0 
以下是引用lixang在2007-1-24 20:10:00的发言:
tempalte<class T,class Alloc=alloc, size_t BufSize=0>
class deque
{
......................//构造函数 //初始化表
deque (int n,const value_type &value) :start (),finish(),map(0),map_size(0)
{...................................}
//start 是指针,finish是指针,map指针的指针
...................................................//上面对start 是指针赋值为()空括号是什么意思
//对指向指针的指针map赋值为0如何解释呢?
}

start()就相当于start(0)


2007-01-25 00:54
xdztc
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-1-7
收藏
得分:0 
start()就不相当于start(0) start()与start(0)是有很大的不同的

2007-01-25 09:58
tyc611
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-1-21
收藏
得分:0 
以下是引用xdztc在2007-1-25 9:58:00的发言:
start()就不相当于start(0) start()与start(0)是有很大的不同的

“值初始化”()包括两种情况,如果是内置类型,则初始化值为0;如果是类类型,则调用默认构造函数。
这儿的start为指针,所以初始化为0,start()也就相当于start(0)


2007-01-25 12:46
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
类域内的指针都是用NULL默认初始化

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2007-01-25 18:24
tyc611
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2007-1-21
收藏
得分:0 
以下是引用song4在2007-1-25 18:24:00的发言:
类域内的指针都是用NULL默认初始化

错了,别误导,类的未初化非静态成员变量,其值是未知的(没有初始化值),当然也包括指针变量

附个测试代码:

#include <iostream>
using namespace std;

class Test {
public:
void Run() {
cout<<"Value of a pointer: "<<p<<endl;
}
private:
int *p;
};

int main() {
Test tt;
tt.Run();

return 0;
}


[此贴子已经被作者于2007-1-25 23:32:03编辑过]


2007-01-25 23:31
lixang
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2006-7-15
收藏
得分:0 
以下是引用xdztc在2007-1-25 9:58:00的发言:
start()就不相当于start(0) start()与start(0)是有很大的不同的

问题:
1: 既然start()就不相当于start(0),那么就是说start()没有对start进行赋值;
但是在使用指针时如果不进行初始化会出问题的:那么如何解释呢?
2: 那么究竟对指针是赋值为Null还是为0呢?具体有和规定?

2007-01-26 12:22
快速回复:构造函数初始化表问题
数据加载中...
 
   



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

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