面试时考了一个C++的问题,是这样的

bkhswrp 2003-11-22 08:47:19
class base{
base:i(1){}
...
}

里面的i(1)是什么意思啊,我好像从来没发现有这样的用法。
...全文
56 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangye1211 2003-11-27
  • 打赏
  • 举报
回复
好像是有的成员变量不能在构造函数中初始化。
beyondada 2003-11-26
  • 打赏
  • 举报
回复
无语
yuantao 2003-11-24
  • 打赏
  • 举报
回复
老大,你有没有学过c++。实在是很怀疑
Rossonero 2003-11-24
  • 打赏
  • 举报
回复
初始化列表主要用在初始化const成员变量上.
class t
{
const int i;
public:
t(int I=0);
~t();
};
t::t(int I):i(I){}
t::~t(){}
要不你怎么初始化i?
xiao3269 2003-11-24
  • 打赏
  • 举报
回复
对与class base{
base:i(1){}
...
};
也是一个初始化的意思,同上是一样的,

不过各种方试都是差不多的
5852 2003-11-23
  • 打赏
  • 举报
回复
这个问题也不懂 人家估计不会要你了
blossom007cn 2003-11-23
  • 打赏
  • 举报
回复
这都不会真不知道你大学怎么念的!!!
kdush 2003-11-23
  • 打赏
  • 举报
回复
都说的差不多了,我也没啥好说的了。
同意楼上的看法!
ninjaiking 2003-11-23
  • 打赏
  • 举报
回复
这种用法使得常量和引用的数据成员的初始化成为可能
class base
{
public:
base() : i(1),refs(i){}

protected:
const int i;
int &refs;
};
而不允许像这样来初始化常量和引用
class base
{
public:
base()
{
i=1;
refs=i;
}

protected:
const int i;
int &refs;
};



About2Rain 2003-11-23
  • 打赏
  • 举报
回复
看看深入探索C++对象模型吧
有时候必须这么做的
crossingdragons 2003-11-23
  • 打赏
  • 举报
回复
不就是一个前导吗?i 是私有数据成员用1初始化i,就这么简单
heguobaoceo 2003-11-23
  • 打赏
  • 举报
回复
哎,那我问你一句,你有没有学过C++啊,其实
它如
base{
i=1;
}
or
base:i(1)
{}
royalty 2003-11-23
  • 打赏
  • 举报
回复
class base{
base:i(1){}
...
};
初始化base一个i的成员,与
class base{
base
{
i=1;
}
...
};等价,但是后者在效率上不如前者
WindFroce 2003-11-23
  • 打赏
  • 举报
回复
初始化列表吗?
其中i 是数据成员用1初始化i
oopig 2003-11-23
  • 打赏
  • 举报
回复
to qufan(打死不回头)
>>初始化列表,好像现在都很少用这种方式了,楼主不记得也很正常啊
这种方式很常用,因为这样成员对象只需要构造一次。而且有时候必须这么用,例如:
class Member
{
public:
Member(int) {}
};
class Container
{
private:
Member m_member;
public:
Container() : m_member(10)
{
}
};
以下代码是编译不通过的:
class Container
{
private:
Member m_member;
public:
Container()
{
m_member = Member(10);
}
};
qufan 2003-11-23
  • 打赏
  • 举报
回复
初始化列表,好像现在都很少用这种方式了,楼主不记得也很正常啊
bluestone 2003-11-22
  • 打赏
  • 举报
回复
初始化列表,呵呵,我在大学时也很少这么用,主要是不接触实际项目,对技术的掌握也不深:)
ninjaiking 2003-11-22
  • 打赏
  • 举报
回复
class base
{
public:
base() : i(1){}

protected:
int i;
};

i(1)表示调用以1为实参的base类的构造函数
嘉诩 2003-11-22
  • 打赏
  • 举报
回复
base():i(1){}是base类的构造函数;i是base类的成员变量
相当于
base(){
i=1;
}


caolg 2003-11-22
  • 打赏
  • 举报
回复
同意wincp(老狼)的观点。用1来初始化i。
加载更多回复(2)

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧