类的默认构造函数

sinat_25044915 2015-05-28 08:18:52
如题C++会自动添加默认函数呢?还是需要自己写构造函数?

#include<iostream>
#ifndef TEST_H
#define TEST_H
using namespace std;
class CTest{
public :
int m_num;
int GetNum();
void SetNum(int a);

};
#endif

这里如果不添加CTest(){}构造函数的话,运行下面代码时会提示类 t1 未初始化。添加了构造函数就不会。
C++应该会自动添加默认构造函数吧,还是我哪里理解的有错误,请大神指点
#include<iostream>
#include"test.h"
int CTest ::GetNum(){
return m_num;
}
void CTest ::SetNum(int a){
m_num = a;
}
void ShowNum(CTest test){
cout<<"类中的成员变量"<<test.m_num<<endl;
cout<<"类中的方法"<<test.GetNum()<<endl;
}
void CTestprint(CTest t){
cout<<"输入一个整数"<<endl;
cin>>t.m_num;
cout<<"调用ShowNum函数"<<endl;
ShowNum(t);
}
int main(void){
CTest t1;
CTestprint(t1);
return 0;
}
...全文
385 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wq327 2015-06-02
  • 打赏
  • 举报
回复
对于构造函数,像你这样的类,那么新建的时候成员是没有进行初始化的,而系统自动添加的构造函数没有做任何的工作(我觉得在这里你是认为系统的默认构造函数会将成员变量自己进行初始化了),当然如果你的成员没有任何需要初始化的工作你是不需要自己写构造函数的!我猜这就是你的疑问吧
sinat_25044915 2015-05-28
  • 打赏
  • 举报
回复
引用 1 楼 taodm 的回复:
当然是你的理解错得一塌糊涂啊。 C++是会自动添加默认构造函数,但是这个函数对内建基本类型是啥都不做,等于没有。 老老实实4大函数自己写。
我看的书上是这么写的,那就是说上面的代码就是错误的喽。还是得自己写构造函数你是这个意思吧。
taodm 2015-05-28
  • 打赏
  • 举报
回复
当然是你的理解错得一塌糊涂啊。 C++是会自动添加默认构造函数,但是这个函数对内建基本类型是啥都不做,等于没有。 老老实实4大函数自己写。

64,648

社区成员

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

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