谁能告诉我<<<<<如何在一个构造函数里调用另一个构造函数?>>>>>

clancy 2003-08-29 10:07:07
谁能告诉我如何在一个构造函数里调用另一个构造函数?
可行吗?如何做啊?
...全文
619 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
mafandale 2003-09-09
  • 打赏
  • 举报
回复
class A
{
public:
A(int i, int j)
{
_i = i;
A(20); // 没有问题
A(_j); // 不行
}
A(int j)
{
_j = j;
}

public:
int _i;
int _j;
};

VC编译没有问题,奇怪吧。。谁能解释?
jp311 2003-09-04
  • 打赏
  • 举报
回复
楼上的方法不错,就是麻烦了点。
为什么C#,JAVA都支持构造函数调用本类自己的构造函数,而C++不直接支持呢
sakurar 2003-09-04
  • 打赏
  • 举报
回复
不过楼主还是没表达清意思。
也不知到底是什么意图。
sakurar 2003-09-04
  • 打赏
  • 举报
回复
可以直接调构造函数的。

#include <iostream>

using namespace std;
class TT
{
int m;
public:
TT()
{
new (this) TT(10,this);
}
TT(const int i,TT* t)
{
t->m=i;
}
};

试试
昌意 2003-09-04
  • 打赏
  • 举报
回复
我想是不是楼主没有说清楚,
是不是一个类的构造调用另一个类的,
另外是包容还是继承。
要说直接调用的话。我认为没有必要。在对象的初使化时就直接调用构造就可以了。
techlibin 2003-09-04
  • 打赏
  • 举报
回复
to dddc(dddc_redsnow) :不会,是在第一个空间中构造第二个对象,不过这个实现就构造了两次对象, 效率不高。

如果楼主想通过调用类的自己的构造函数来实现一些逻辑,那么可以通过添加私有函数实现。
class TT
{
int m;
public:
TT()
{
Init();
}
TT(const int i,TT* t)
{
Init();
}
private:
Init()
{
.....;
}

};
MSN3000 2003-09-04
  • 打赏
  • 举报
回复
构造函数不能被直接调用,,,好象有点明白楼主的意图。。。
class TT
{
int m;
public:
TT(const int i = 10,TT* t = this)
{
t->m=i;
}
};
不知道偶想的对不对,,^_^

dddc 2003-09-04
  • 打赏
  • 举报
回复
VC6 通过楼上的楼上的方法,可是这样是不是分配两个对象空间(其中第二个是临时的,付给第一个);?
Demonx 2003-09-03
  • 打赏
  • 举报
回复
这个……说实话,我也不是很明白。
lang2000 2003-08-31
  • 打赏
  • 举报
回复
构造函数是不可以直接调用的
Wolf0403 2003-08-31
  • 打赏
  • 举报
回复
呵呵,正在看 java ,差点烦错。java 中用类似
TT()
{
TT(10,this);
}
TT(const int i,TT* t)
{
t->m=i;
}
的东西代替默认参数
oopig 2003-08-29
  • 打赏
  • 举报
回复
你有什么特别的需要这么做吗?
sevecol 2003-08-29
  • 打赏
  • 举报
回复
class TT
{
int m;
public:
TT()
{
TT(10,this);
}
TT(const int i,TT* t)
{
t->m=i;
}
};
fastzch 2003-08-29
  • 打赏
  • 举报
回复
同意 kotton8848(jyq)的说法。
sevencat 2003-08-29
  • 打赏
  • 举报
回复
你查查constructor()这个函数吧.
看看std::new原代码试试吧
我看到std::new的原代码里面用的是这个东西,就是说给定分配好的内存块调用构造函数.
kotton8848 2003-08-29
  • 打赏
  • 举报
回复

通过两个类的继承可以实现这个功能
5956 2003-08-29
  • 打赏
  • 举报
回复
同意liu_feng_fly
java中可以,c++中不行
liu_feng_fly 2003-08-29
  • 打赏
  • 举报
回复
不能

64,654

社区成员

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

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