求大神指点有关类的问题

光暖绿苔溪 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,而是个随机数?求详解。
}
...全文
120 点赞 收藏 11
写回复
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日
楼主你的程序能编译的过吗
回复 点赞
发动态
发帖子
C++ 语言
创建于2007-09-28

3.1w+

社区成员

24.8w+

社区内容

C++ 语言相关问题讨论,技术干货分享
社区公告
暂无公告