社区
C++ 语言
帖子详情
关于构造函数的问题
tenix
2003-10-16 03:22:07
构造函数是不是在任何情况下都不能被其他函数调用?包括重构的构造函数调用另一个?
...全文
42
13
打赏
收藏
关于构造函数的问题
构造函数是不是在任何情况下都不能被其他函数调用?包括重构的构造函数调用另一个?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sttony
2003-10-18
打赏
举报
回复
To ttlb(小鸟___ttlb___)
explicit是为了防止隐式类型转换,可能是我的话说的不清楚,举个例子说明:
class C
{
public: int m_a;
C(int a){ m_a=a;};
}
在构造函数不加explicit时,在使用型别C的地方也可以使用型别int,例如
void prt(C c1)
{
cout<<c1.m_a;
};
....
prt(12); // 合法, C(int a){ m_a=a;};被理解成一个类型转换运算符,将12转换成了一个
// 型别为C的对象,合法。
.....
若将构造函数申明为explicit,上诉的函数调用就不合法,型别不同。但
prt( C(12)); // 合法构造了一个临时对象
是合法的。
不知道我的理解对不对
Wolf0403
2003-10-17
打赏
举报
回复
注意:
构造函数是静态的(static),而析构函数是非静态的。
调用:
b.~Base();
Wolf0403
2003-10-17
打赏
举报
回复
难道大家都认为构造函数不能从系统之外的地方调用吗?Look~
class Base
{
public:
Base():m_i(0){}
void Reset(){*this = Base();}
int operator=(int i){m_i = i; return m_i;}
int m_i;
};
int main()
{
Base b;
b = 3;
cout << b.m_i << endl;
b.Reset();
cout << b.m_i << endl;
b = 3;
b = Base::Base();
cout << b.m_i << endl;
}
nowonline
2003-10-17
打赏
举报
回复
当然不是啦.
在继承机制中,子类的构造函数通常先调用父类的构造函数.
langzi8818
2003-10-17
打赏
举报
回复
是对象初始化时系统自动调用的,不可以被其他函数调
ttlb
2003-10-17
打赏
举报
回复
To sttony(冥界来客) :
我记得将构造函数申明为explicit是为了表示一个只有一个参数的构造函数确实是一个构造函
数
我不知道你这句话出自何处,但我还不知道有这种说法。
我觉得 explicit 是为了防止隐式类型转换,也就是隐式的构造函数调用。如果不希望类中发生隐式的构造函数调用,就要把他声明为 explicit
caizzrr
2003-10-16
打赏
举报
回复
是对象初始化时系统自动调用的,不可以被其他函数调用
lingar
2003-10-16
打赏
举报
回复
构造函数有创建对象时自带调用的
也可由在重载中等调用的啊
buaaaladdin
2003-10-16
打赏
举报
回复
学习ing:)
danielhf
2003-10-16
打赏
举报
回复
用构造函数可以生成临时对象
比如抛出异常时 throw T();
比如在堆中分配内存时 T t = new T();
同理, 析构符也可以显示调用 T t; t.~T();
sttony
2003-10-16
打赏
举报
回复
如果构造函数被声明为 explicit,
那么在进行“类型转换”的时候就要显式调用
??
我记得将构造函数申明为explicit是为了表示一个只有一个参数的构造函数确实是一个构造函数,而不是一个隐式的类型转换运算符.
C* pC= new C(...)基本上就是显式的调用构造函数,有时通过 C(..) 的形式产生一个临时对象.比如 v.push_back(string("Hello")) 就产生了一个临时字符串对象加入道容器中.
至于在一个构造函数中调用另一个也是可以的,但调用创建的是另一个对象.比如类C有两个构造函数C1和C2.通过C1构造对象a ,C1构造函数中调用了C2,则C2返回之后创建了对象b.
ttlb
2003-10-16
打赏
举报
回复
如果构造函数被声明为 explicit,
那么在进行“类型转换”的时候就要显式调用
qiuzhang
2003-10-16
打赏
举报
回复
构造函数不是有程序员调的,是在创建对象时自带调用的
面向对象和
构造函数
JavaSE就是一种标准版,是Java中的基础部分,Java各种框架和产品都是基于JavaSE,也就是JavaSE是Java向上发展的基础,它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的Java应用程序。...
C#中
构造函数
的定义以及特点和作用(详细解释)
构造函数
:一.
构造函数
的定义:二.
构造函数
的特点:三.
构造函数
的作用:四.
构造函数
的方式: 一.
构造函数
的定义:
构造函数
:
构造函数
,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总...
C++中
构造函数
,拷贝
构造函数
和赋值函数的区别和实现
C++中一般创建对象,拷贝或赋值的方式有
构造函数
,拷贝
构造函数
,赋值函数这三种方法。
构造函数
就是当创建一个类的对象时,它被调用来对类的数据成员进行初始化和分配内存。拷贝
构造函数
是一种特殊的
构造函数
,用...
C++默认
构造函数
本文围绕3个
问题
来理解C++的默认
构造函数
: 什么是默认
构造函数
? 默认
构造函数
什么时候被调用? 编译器在什么情况下会生成默认
构造函数
? 一. 什么是默认
构造函数
? 我们一般会认为默认
构造函数
就是编译器...
构造函数
与拷贝
构造函数
拷贝
构造函数
和
构造函数
不能分开说,他们都是初始化对象的一种方法。但是我们这里用
构造函数
辅助说明拷贝
构造函数
,主要说说拷贝
构造函数
的声明,用途和使用注意事项。 众所周知,
构造函数
是一个初始化类对象的函数...
C++ 语言
64,685
社区成员
250,491
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章