C++类与对象的问题

类的的成员是类所有的,还是类的对象所有的.对这些概念弄不清.比如我定义了一个类,类有两个对象.类中的数据是个怎么样的关系
class cat
{ int a;
int b;
int function();
}
int main()
{
class A;
class B;
A.int a=5;
B.int a=3;
std::cout<<"a="<<a;
return 0;
}
这时打印的a值是多少.int a 是类cat中的成员,还是类的对象A中的成员,还是对象B中的成员呢.

class cat //这叫一个类
{ int a;
int b;
int function();
}
你这样定于就是 a 和 b 都是cat类里面的数据成员,类cat什么时候都能访问这2个数据成员.function()成员函数也一样.

如果要实例化一个对象(也称实例)是这样的.
cat cat1;
cat cat2;
或者:
class cat cat1;
(class 一般可以省略)
但是你写的:
class A;
class B;
都是错误的,因为编译器不知道A和B是什么类.
还有,类的数据成员和函数都有private(私有),protected(保护),public(共有)之分,没有加这些说明的时候,是private(私有).
所以你不能在类的外部访问它们.
所以:
A.int a=5;
B.int a=3;
这2句都是错误的.
还有,如果a和b假设都是public的话,要赋值的时候也不用再定义了(int)因为已经在cat类定义好了.
最后,
不能 std::cout<<"a="<<a;
因为a是谁的?? 到底是 实例A还是B的呢?
编译器找不到这个变量
你可以这样:
std::cout<< "A.a==" << A.a <<endl;
输出就是A实例的数据成员a.

说得这么多,你应该明白了,如果不明白继续看书,这部分很容易的.下面帮你把程序写完整吧.

#include <iostream>
class cat
{
public: //把数据成员和函数设置成public(共有的,外部就能访问了)
int a;
int b;
int function();
} ;
int main()
{
class cat A; //用cat实例化个对象
class cat B; //用cat实例化个对象
A.a=5; //给类A的a赋值5
B.a=3; //给类B的a赋值3
std::cout<<"A.a="<<A.a <<endl; //输出5
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-07-16
非静态的类成员变量,是类实例所有的,比如人是一个类,张三、李四的名字是各自实例所有。
静态的是各个实例共有的,比如某个城市名字变了,生活在该城市的人的居住地名字都要改。

//这个函数没有几句是对的
//我按照你写的来解释
int main()
{
class A; //声明类A
class B; //声明类B
A.int a=5; //编译语法出错
B.int a=3; //编译语法出错
std::cout<<"a="<<a; //编译语法出错,a未定义
return 0; //返回0并退出函数
}

可以这样写
class cat
{

int a;
int b;
int function();
};//类定义后要有;

int main()
{
cat A; //定义类cat实例A
cat B; //定义类cat实例B

A.a=5; //实例A成员变量a赋值为5
B.a=3; //实例B成员变量a赋值为3
cout<<"A.a="<<A.a;
cout<<"B.a="<<B.a;

return 0; //返回0并退出函数
}
第2个回答  2007-07-17
类定义只是规定了内存块的一种格式,类的实例化就是向系统申请了能放下类定义的所有变量的内存空间,所以使用类的某个变量的时候要指明是哪个实例的

C++类区别:类和对象
类与对象是C++编程中两个核心概念。它们之间的区别常常让人感到困惑。类是对象的蓝图或模板,而对象则是类的实例。例如,我们可以将“汽车”定义为一个类,包含属性如颜色、品牌、速度等,以及方法如启动、加速、刹车等。当我们创建“宝马”、“奔驰”或“奥迪”这些具体的汽车时,我们就是在创建“汽车...

c++的类和对象
类是具有相同属性和相同的方法的对象的集合,它是一种既包含数据又包含函数的抽象数据类型。对象是类进行实体化后的产物,是一个实体。在C++中也是先声明一个类类型,然后用它去定义若干个同类型的对象。对象就是类类型的一个变量。可以说类是对象的模板,是用来定义对象的一种抽象类型。类是抽象的,...

C++类和对象到底是什么意思?
C++是一门面向对象的编程语言,理解C++首先需要明白类(Class)与对象(Object)这两个概念。在C++中,类可以被看作是C语言中结构体(Struct)的升级版。结构体是一种构造类型,可以包含不同类型的成员变量。通过结构体定义的变量称为结构体变量,具有相同的性质。例如:运行结果:小明的年龄是15,成绩是...

C++类和对象到底是什么意思?
理解C++的类和对象,需要从面向对象编程的基本概念入手。C++中的类(Class)与C语言的结构体(Struct)相似,但功能更加强大。类不仅包含变量,还能包含函数,使成员变量与处理这些变量的函数成为一个整体。如:class Student { ... }。对象(Object)是类的实例化,通过类定义的变量被称为对象。在C++...

关于C++对象访问类成员的问题
类的成员是分级别的:protect,public,private。在类内部定义的函数可以访问任何一个变量,或者调用任何的类内部的函数,但是,如果被定义成private的话,对象是不能调用的,也就是对象只能调用定义为public的数据,如果你确实需要调用某个private的变量,你可以定义一个public的函数来返回这个变量,比如:cla...

C++类和对象到底是什么意思?
在C++的世界里,通过类名创建对象,即类的实例化,是实现封装和复用的关键步骤。这就像从图纸到实物的转化,类提供了抽象的框架,而对象则是具体的应用实例。在大型项目中,类的组织和管理能力是提升开发效率的关键因素。虽然面向对象编程在代码执行效率上可能不具明显优势,但它的主要价值在于提升代码的...

关于c++的类与对象的题目。。为什么会选择c而不是d。类的名字是个抽象...
不是D的原因批阅里面已经说了,是C的原因是因为"::"表示作用域,BASE::fun表示调用类BASE的fun函数,这种用法只适合两种情况。一个就是你的题目中的两个类是父子关系时,此时的对象就是子类定义的对象;另一个是fun函数是静态函数时,fun不属于任何对象 ...

C++类 的问题
1.类就是对一个事物抽象出来的结果。封装,指两方面含义,一是将有关的数据和操作代码封装在一个对象中,形成一个基本单位,各个对象之间相对独立,互不干扰。二是将对象中某些部分对外隐蔽,即隐蔽其内部细节,只留下少量接口,以便于外界联系,接受外界信息。2.类是面向对象程序设计的核心,它实际是...

求助!C++中类的构造函数与创建动态对象的问题!
第一段代码 类a中你没有些构造函数,因此,编译器会替你自动添加一个默认的构造函数: a(void){},所以你在第一段的main函数中p = new a;时,实际上调用的是这个默认的构造函数a(void){},当然不需要参数。第二段代码你自己写了构造函数,编译器就不会替你添加默认的构造函数,所以在main...

C++中如果把人比喻成类,张三,李四比喻成对象,那是不是就是说类由对象...
1.并不是说类由对象组成,比如说一个班级里有很多学生,则说班级是由这些学生组成的,但并不能说这个班级是这些学生所对应的类,这应该能理解吧;2.下面再说类和对象,类是对象的抽象,比如说一个学生有确定的姓名,叫王五,但抽象出来的学生类就没有确定学生是叫王五,只是说学生是有姓名这个属性的...

相似回答
大家正在搜