求大神指点有关类的问题

光暖绿苔溪 2014-01-04 09:27:17
程序是这样的
#include <iostream>
using namespace std;
class num
{
public:
num(){int n=1;}
~num(){}
int get() const{return n;}

private:
int n;
};
int main()
{
int i=-1;
cout<<"i:"<<i.get()<<endl;
return 0;


为何加了int后,输出的值不是1,而是个随机数?求详解。
}
...全文
156 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
SKATE11 2014-01-06
  • 打赏
  • 举报
回复
加了int n就不是类成员中的n了 那么类成员中的n就是未初始化的 所以出现问题
buyong 2014-01-06
  • 打赏
  • 举报
回复
加了int后, num::n not initialized!
漫步者、 2014-01-06
  • 打赏
  • 举报
回复
先去把语法搞定吧
azhou88 2014-01-06
  • 打赏
  • 举报
回复
#include <iostream> using namespace std; class num { public: num(){n=1;} ~num(){} int get() const{return n;} private: int n; }; int main() { // int i=-1; // cout<<"i:"<<i.get()<<endl; num m; cout<<m.get()<<endl; return 0; } 这是没有问题的,我帮你小浮动的修改了一下。 好了,来看看你的问题把 首先:num(){int n=1;} 这里是构造函数,是个函数体,里面你定义了int n=1;可以认为是类里的局部变量,是构造函数里的,和你定义的类成员变量n不是一个。就是说这个类里有2个n,可以认为一个是局部的n,一个是全局的n,当然这里的全局是相对类来说的。希望你理解。 其次在来看看你这2句: int i=-1; cout<<"i:"<<i.get()<<endl; 不难看出来,你是想调用类成员函数get(). 但是要调用必须要创建对象把?类创建对象需要num *;这里的*就是对象名。比如我这里的num m; 然后就可以用m.get了。这里m是对象,就可以使用对象来调用类成员函数了。希望你理解
jiandingzhe 2014-01-06
  • 打赏
  • 举报
回复
引用 楼主 u013380756 的回复:
程序是这样的 #include <iostream> using namespace std; class num { public: num(){int n=1;} ~num(){} int get() const{return n;} private: int n; }; int main() { int i=-1; cout<<"i:"<<i.get()<<endl; return 0; 为何加了int后,输出的值不是1,而是个随机数?求详解。 }
你在构造函数里建立了一个局部int变量n,把它赋值为1,然后什么也不做。
signforlin 2014-01-06
  • 打赏
  • 举报
回复
编译都不通过,怎么能输出呢。楼上的猜测估计对楼主有用,再多看看书吧。
Jimmy1224 2014-01-06
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <iostream>
using namespace std;

class num
{
public:
	num(){ n=1;}//默认构造函数,默认值n=1;int n=1;是局部变量,不是私有成员变量
	num(int inum){n=inum;}//带参数的构造函数
	~num(){}
	int get() const{return n;}

private:
	int n;
};

int main()
{
	num ii;//定义对象ii,输出值为1;lz是定义一个int类型的变量i=-1;不是类对象
          //num ii(10);//输出值为10
	cout<<"ii:"<<ii.get()<<endl;//调用类中的get方法,lz调用会出错,i不是对象类型
	return 0;
}
希望这些对你有用
zhuobattle 2014-01-06
  • 打赏
  • 举报
回复
楼主简单是战斗机
menzi11 2014-01-06
  • 打赏
  • 举报
回复
你自己想想为什么要加int再来问行吗.....
还有多远 2014-01-04
  • 打赏
  • 举报
回复
我们知道在函数内部定义一个与全局变量相同名字的变量,则在函数内部会使用这个局部变量,同名的全局变量会被屏蔽(也不会修改),所以类似的,你加了int即是在num()函数内部定义了一个局部变量n,且初始化为1
Pump天天学习 2014-01-04
  • 打赏
  • 举报
回复
楼主你的程序能编译的过吗

64,687

社区成员

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

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