社区
C++ 语言
帖子详情
关于构造函数的问题
tenix
2003-10-16 03:22:07
构造函数是不是在任何情况下都不能被其他函数调用?包括重构的构造函数调用另一个?
...全文
30
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
打赏
举报
回复
构造函数不是有程序员调的,是在创建对象时自带调用的
C#中
构造函数
的定义以及特点和作用(详细解释)
构造函数
:一.
构造函数
的定义:二.
构造函数
的特点:三.
构造函数
的作用:四.
构造函数
的方式: 一.
构造函数
的定义:
构造函数
:
构造函数
,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个
构造函数
,可根据其参数个数的不同或参数类型的不同来区分它们 即
构造函数
的重载,类的
构造函数
是类的一个特殊的成员函数,当创建类的新对象时执行。当实例化一个类对象的时候自动调用这个函数。 二.
构造函数
的特点: 特点:
构造函数
的命名
C++中
构造函数
,拷贝
构造函数
和赋值函数的区别和实现
C++中一般创建对象,拷贝或赋值的方式有
构造函数
,拷贝
构造函数
,赋值函数这三种方法。
构造函数
就是当创建一个类的对象时,它被调用来对类的数据成员进行初始化和分配内存。拷贝
构造函数
是一种特殊的
构造函数
,用基于同一类的一个对象构造和初始化另一个对象。当一个类的对象向该类的另一个对象赋值时,就会用到该类的赋值函数。拷贝
构造函数
是一个对象初始化一块内存区域,这块内存就是新对象的内存区,而赋值函数是对于一个已经被初始化的对象来进行赋值操作。拷贝
构造函数
首先是一个
构造函数
,它调用时候是通过参数的对象初始化产生一个对象。
构造函数
与拷贝
构造函数
拷贝
构造函数
和
构造函数
不能分开说,他们都是初始化对象的一种方法。但是我们这里用
构造函数
辅助说明拷贝
构造函数
,主要说说拷贝
构造函数
的声明,用途和使用注意事项。 众所周知,
构造函数
是一个初始化类对象的函数,即使不显示调用,编译器也会隐式调用
构造函数
初始化类对象。同样的,拷贝
构造函数
是一种特殊的
构造函数
,目的也是初始化类对象,同样在不声明的情况下也会隐式调用该函数。而隐式调用拷贝
构造函数
的时候,我们称...
C++默认
构造函数
本文围绕3个
问题
来理解C++的默认
构造函数
: 什么是默认
构造函数
? 默认
构造函数
什么时候被调用? 编译器在什么情况下会生成默认
构造函数
? 一. 什么是默认
构造函数
? 我们一般会认为默认
构造函数
就是编译器自动生成的那个
构造函数
,其实这种理解不全面。 准确的说,默认
构造函数
就是在调用时不需要显示地传入实参的
构造函数
。根据这个原则,下面2种
构造函数
都是默认
构造函数
: class S...
C++:
构造函数
与重载
构造函数
本文主要总结了默认
构造函数
的相关用法和
构造函数
重载,旨在能够对平时的项目开发起到一定的夯实基本功的作用,言简意赅,一目了然。 一、
构造函数
的定义
构造函数
是用来做什么?就是该类对象被创建时,编译器为对象分配内存空间,并自动调用该
构造函数
,由
构造函数
完成数据成员的初始化工作。 二、
构造函数
的分类
构造函数
分为默认
构造函数
和重载
构造函数
。默认
构造函数
分为两类 1.默认
构造函数
1)定义一个无参数的默认
构造函数
; 2)定义所有参数都有默认值的默认
构造函数
2.重载
构造函数
在一个类中可以定义多个
构造函数
,以便提
C++ 语言
64,282
社区成员
250,470
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章