社区
C语言
帖子详情
请问为什么构造函数和析构函数都必须声明在 public中?
zhaobong
2002-01-11 09:34:15
我想是不是因为用类定义变量后,在执行时会调用此类的构造函数和析构函数的缘故?
...全文
853
17
打赏
收藏
请问为什么构造函数和析构函数都必须声明在 public中?
我想是不是因为用类定义变量后,在执行时会调用此类的构造函数和析构函数的缘故?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
LLnju
2002-03-18
打赏
举报
回复
VC6 有这个BUG,析构函数不能是 private 的,但VC7可以。
alafeng
2002-03-18
打赏
举报
回复
同意FOXMIKE ,TOO!!!
LLnju
2002-03-18
打赏
举报
回复
同意 foxmike(我们的故事爱就爱到值得) ,想怎么定义就怎么定义
baifeng
2002-01-13
打赏
举报
回复
关注
foxmike
2002-01-13
打赏
举报
回复
构造函数并不一定要被声明为public的呀,出于某种设计原因也可以将它设为private.
zhaobong
2002-01-13
打赏
举报
回复
你用的是什么编译器?
lak47
2002-01-13
打赏
举报
回复
构造函数和析构函数都可以声明为private,我就这样用过,我想限制我的类的实例只能由特定的函数或类生成,于是我就把类的构造和析构函数声明为private,把想生成这个类的实例的函数或类声明为这个类的友元,在到我的要求
Soft21
2002-01-13
打赏
举报
回复
大家好啊,关注
movingboy
2002-01-12
打赏
举报
回复
把构造函数声明为private的用法,hyqryq说得比较清楚了;把析构函数声明为private就不太寻常了。(MEC++我还没看呢)想想这样一个例子:ClassB继承自ClassA,如果ClassA的析构函数为private,则ClassB析构时无法调用ClassA的析构函数,于是ClassB就无法完全释放,这会造成内存泄漏及其他一些不可预知的后果。
hyqryq
2002-01-11
打赏
举报
回复
不要用 VC , VC 对 standard C++ 的支持很差, (这就是垄断的恶果呀)
我记得我以前用 VC 也通不过编译, 不过 GNU C++ 可以.
换个编译器用用吧......................
zhaobong
2002-01-11
打赏
举报
回复
我刚刚在VC++6.0中编程试过了,将构造函数和析构函数同时放在private中,编译的过程中VC只对析构函数指出错误,明确说明析构函数不能在private中,而没有对构造函数提出疑问。说明构造函数可以声明为private或者public,但是析构函数只能声明为public。
hyqryq
2002-01-11
打赏
举报
回复
其实思想不过是通过访问控制限制对象在全局接口的生成, 构造一个
专用的接口, 通过专用的接口对对象进行生成和访问..................
hyqryq
2002-01-11
打赏
举报
回复
一个简单singleton例子:
http://www.csdn.net/Develop/read_article.asp?id=10707
在 <<more effective C++ >>中, 有关于counting object
的详细论述.
如果把构造函数声明为 protect 型的话, 那么他就起了一个抽象类的
作用.
亦可以把析构函数定义为 private, 也有特殊的用处, 你还是
看看<<more effective C++ >>吧.
cBeginner
2002-01-11
打赏
举报
回复
构造函数声明在public中是因为可以被外部调用,比如:
class A{
int age;
public:
A(int Age){
age = Age;
cout << "age = " << age;
}
};
void main(void){
A a;
a(25);
}
如果这个构造函数(重载构造)声明在private或protect中的话,那外部就不能调用它了。构造函数用不上的话,那……呵呵
hyqryq
2002-01-11
打赏
举报
回复
不一定呦, 如果你不想让这个类生成实例或想控制它的实例数量的话, 当然可以把他们定义在private中.
很多面向对象的技术就是用这种方法来实现, 例如 singleton, counting object
...........
greening
2002-01-11
打赏
举报
回复
构造函数本来主要是用来给private的变量赋初值用的,不把构造函数声明在public中,当然就不可以给private赋值了。再说,不把构造函数声明在public中,外部就不能够调用它了,就失去了它的作用,几乎就没什么用了。析构函数也同理。
cnss
2002-01-11
打赏
举报
回复
其实,是对象产生后马上调用该函数
这个调用过程是编译器自动加上的,你可以看看生成的汇编代码
C++
构造函数
和
析构函数
(为什么要用和怎么用)
本文深入解析
构造函数
和
析构函数
的概念与使用,强调它们在对象生命周期
中
的关键作用。
构造函数
负责对象初始化,而
析构函数
则处理对象清理工作。文章详细介绍了
构造函数
的特性,包括自动调用、重载、参数传递等,以及
析构函数
的不可重载性和自动调用时机。同时,还探讨了编译器如何在特定条件下生成默认
构造函数
。
构造函数
、
析构函数
、多态、虚函数、纯虚函数、虚
析构函数
、拷贝
构造函数
、protected、private、
public
本文介绍了C++
中
的
构造函数
、
析构函数
、虚函数、纯虚函数、虚
析构函数
以及拷贝
构造函数
的概念和用法。
构造函数
用于初始化类的对象,
析构函数
在对象销毁时释放资源。虚函数实现多态,纯虚函数使得类成为抽象类,不允许实例化。虚
析构函数
确保基类指针正确调用子类的
析构函数
,防止内存泄漏。拷贝
构造函数
处理对象复制的情况,涉及深拷贝和浅拷贝的概念。此外,还讨论了访问修饰符(
public
,protected,private)的作用。
C++
构造函数
、
析构函数
、拷贝
构造函数
本文深入解析C++
中
的
构造函数
、
析构函数
、拷贝
构造函数
的概念、特性和使用场景,包括默认
构造函数
、
析构函数
、拷贝
构造函数
的详细解释,以及它们在对象生命周期
中
的作用。
为社么类的构造和
析构函数
是
public
的
本文详细解析了C++
中
protected和private访问修饰符的使用场景,包括
构造函数
、
析构函数
及拷贝
构造函数
的
声明
方式,探讨了如何控制类的实例化和对象复制,以及singleton模式的实现。
构造函数
、
析构函数
声明
为私有、保护
本文探讨了在C++
中
,当
构造函数
不为
public
时的解决方案,包括如何通过protected和private修饰符控制对象的创建,以及
析构函数
的私有化对对象生命周期管理的影响。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章