关于类的无参数构造函数

longbeibei 2006-08-22 06:27:02
class A
{
A();
...
}

A test;
...

test.A::A();执行结果及过程是甚么
...全文
411 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
longbeibei 2006-11-02
  • 打赏
  • 举报
回复
问题: 无参数构造函数没有任何操作
为什么A.test::test();
会影响下面的结果呢

是否可以多次调用构造函数????
longbeibei 2006-11-02
  • 打赏
  • 举报
回复
无参数构造函数甚么操作都没有
test::test()
{

}

test::~test()
{

}
longbeibei 2006-11-02
  • 打赏
  • 举报
回复
呵呵
谢谢大家的讨论

class test
{
public:
test();
CString sTest;
virtual ~test();

};
在另外的方法里
test A;
A.sTest="hello";
MessageBox(A.sTest);
A.test::test();
MessageBox(A.sTest);
CDialog::OnOK();
最后一次输出空
勉励前行 2006-10-18
  • 打赏
  • 举报
回复
被test.A::A() 這寫法嚇了一跳。

構造函數是可以調用的。但會生成一個臨時對象。
多次重新构造自己的对象可以這麼做:
A test ;
test = A() ;//這個才是多次重新构造自己,不過對於VCL類,請別這樣用。VCL類不符合C++標准
test.A::A() ; 該通不過編譯吧,不知哪個差勁的編譯器給它編譯通過了。

xiaoshi0 2006-10-17
  • 打赏
  • 举报
回复
就你上面写的例子,存在如下问题:

1。定义class没有在最后加分号,编译肯定不通过。

2。构造函数没有声明成public的,无法执行最后两个语句。

从你想要表达的结果来看:

该例子调用了2次A()构造函数,第一次在A test;时,第二次在test.A::A();时

第二次的意思就是将构造函数当成是普通函数那样调用。

由于我不知道你真正的类中的构造函数都进行了哪些操作,所以无法从该例子中判断为什么你的数据会按照正常的方式进行

个人觉得你的程序,歪打正着的可能行大一些。
leesnow1 2006-10-16
  • 打赏
  • 举报
回复
先会把 A类中的变量都分配内存,然后在执行test.A::A(), 具体的内容是由编译器完成的,不需要人为进行,但不能缺少
longbeibei 2006-08-31
  • 打赏
  • 举报
回复
但是如果不调用test.A::A();
程序输出test成员变量时还是上次的值
调用后就是最新的
只是不明白test.A::A();有什么作用
Keyser 2006-08-29
  • 打赏
  • 举报
回复
完全不理解,构造函数只能由编译器调用,从来没有哪个编译器允许程序员自己调用构造函数的!

何况无参数构造函数表示“不初始化”,完全没有“清空”的意思!

请楼主好好检查自己的表述!
longbeibei 2006-08-29
  • 打赏
  • 举报
回复
没有错误
我都编译测试了
在一个项目里面 数据老是清除不掉
我就试了一下test.A::A();样子的办法
果然把对象里面的数据全部清空
但是在一个小例子里面就是不起作用

请问 如果想多次重新构造自己的对象
如何办到
wt_sanlian 2006-08-24
  • 打赏
  • 举报
回复
编译器会报错!无法编译

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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