C++中, 类的私有数据成员在定义的时候不能进行初始化吗?

作者&投稿:星韩 (若有异议请与网页底部的电邮联系)
C++问题求解,在类中为什么不能给数据成员初始化值:~

因为类只是定义的类型, 还没有实例化,也就是没有定义类的对象(变量), 没法存储

你可以在初始化列表里进行初始化 , 而构造函数的函数体之内赋值的话, 是在初始化后,
-------------
至于定义成static的, 这是静态的, 所有对象共享一个副本, 程序开始执行就初始化了, 就算没有定义对象, 也有它的实例, 能直接使用 A::static_a = xxx;

成员变量是属于特定的对象的变量,你在定义类的时候只是说明此类对象应该具有哪些数据结构,不同的对象的属性不一定完全相同吧?
还有,在定义静态的变量的时候是可以赋初值的,因为它是属于整个类的,为整个类的对象所使用

是的,C++中类的数据成员不管是不是私有的,都不能进行初始化。

因为类就相当于一个数据的模板,是一种自定义组合的新数据类型,而不是一个变量。当程序声明一个类的时候,事实上并没有为程序申请存储空间,只有用这个类定义一个类对象的时候,才申请空间。连空间都没有,当然不能像定义变量一样的初始化了。

扩展资料:

类的私有数据成员的两种初始化方式如下

Point类的构造函数可以写成以下两种方式:

1、//1Point(int xx = 0, int yy = 0) {

x = xx;

y = yy;

}12345

2、//

2Point(int x = 0, int y = 0) : x(x), y(y) { }

注意,第二种方法中的初始化列表中的x(x),虽然都是相同的x变量名,但是两个x是完全不同的变量。

参考资料来源:百度百科-C++



是的,C++中类的数据成员不管是不是私有的,都不能进行初始化。因为类就相当于一个数据的模板,是一种自定义组合的新数据类型,而不是一个变量。当程序声明一个类的时候,事实上并没有为程序申请存储空间,只有用这个类定义一个类对象的时候,才申请空间。连空间都没有,当然不能像定义变量一样的初始化了。
比如定义这么一个学生类的时候:
class Stu          //声明一个学生类 
{private:          //私有成员关键字 
   char Name[32];  //姓名 
   int  ID;        //学号 
   int  Score;};   //成绩
这样程序是没有向系统申请存储空间的,所以如果在里面写上int ID=0;这样是错误的。
如果我们用这个类定义类对象的时候,比如:
Stu One[100];      //定义一个拥有100个Stu类对象的数组
这个时候,程序才向系统申请了100个类对象的空间。
当然,虽然类声明的时候不能直接初始化,但可以通过类的构造函数达到初始化的目的。比如像上面的学生类,可以这么定义:
class Stu          //声明一个学生类
{private:          //私有成员关键字
   char Name[32];  //姓名
   int  ID;        //学号
   int  Score;     //成绩
 public:           //外部成员关键字
   Stu()           //无参构造函数
      {strcpy(Name,"无");
       ID=0;
       Score=0;}
};
在类里和类名同名的函数称为构造函数,这个函数在用类定义对象的时候会由C++的编译器自动调用,这样就能达到初始化的效果。


不能,C++的类的成员变量都不能在定义的时候进行初始化。
只有被声明为static的才可以

可以。不过你说的这个在定义的时候我不明白是什么意思,是指类对象被创建的时候?类对象被创建的时候会自动调用该类的初始化函数,你想初始化私有成员变量只需要把它们的定义写在初始化函数里面就行了。

别说是私有,就连公有以及保护都是不能初始化的,初始化要不在构造函数中进行。


新县18112197110: C++中, 类的私有数据成员在定义的时候不能进行初始化吗? -
蛮呼醒脑: 是的,C++中类的数据成员不管是不是私有的,都不能进行初始化. 因为类就相当于一个数据的模板,是一种自定义组合的新数据类型,而不是一个变量.当程序声明一个类的时候,事实上并没有为程序申请存储空间,只有用这个类定义一个类...

新县18112197110: C++中类的私有数据成员和公有数据成员有什么区别? -
蛮呼醒脑: 说得浅一点: 私有成员(包括数据和成员函数)只能被该类的成员函数和友元函数访问. 公有成员(包括数据和成员函数)可以被任何函数访问.说得深一点: 私有成员和保护成员定义实现,公有成员定义接口.

新县18112197110: C++类成员的定义 -
蛮呼醒脑: 定义私有可以使数据得到有效的保护,同时亦不会对该类以外的其余内容带来影响,程序模块之间的相互作用(耦合性)被降到最小.

新县18112197110: C++类中定义私有数据成员有什么好处 -
蛮呼醒脑: 等同于封装的意义:避免了随意性修改,而且由于一般是通过函数去访问,所以可以在函数内进行处理后返回一种值,比如时间实际上存储为一个整形值,但是你可能只关心second,或者只关心hour,或者希望是hh:mm:ss形式返回,那么你可以只改变函数,而不必重设计变量的情况,可以说是增加了利用率和弹性.好处应该还有其他的方面,建议去看看高手们的博客总结吧.

新县18112197110: c++类中的私有成员变量有什么作用? -
蛮呼醒脑: 私有成员变量,即定义在private区域的成员变量.对于本类成员函数来说,该变量与其它成员变量并无区别.使用上和作用上也都相同.对于通过对象访问,私有成员变量无法通过对象访问.通过这一方式可以起到保护一些数据不被随意修改的效果.另外,在出现继承时,基类的私有成员变量不会被继承.所以,如果存在想保护不被对象引用,或者不想被继承的成员变量,需要定义为私有.

新县18112197110: C++对象访问私有数据成员问题 -
蛮呼醒脑: 1、在友元函数内部,能否通过“类对象.私有数据成员”的形式访问类中私有数据成员?这个是可以的,友元函数就是为了访问私有数据成员才存在的2、在成员函数内部,能否通过“类对象.私有数据成员”的形式访问类中私有数据成员?成员函数本来就可以访问私有数据成员,不明白你这说的类对象是指什么,如果指的是*this的话,也有这种用法,因为局部变量可能和类成员变量同名,这时候可以用this->对象名来访问还有问题hi我

新县18112197110: 用c++定义一个三角形类定义一个三角形类(Triangle),该类中包括私有(private)数据成员:x1 , y1,x2 , y2 和 x3 , y3(分别代表一个三角形的三个顶点坐标... -
蛮呼醒脑:[答案] 代码如下 供参考#include #include using namespace std;class Triangle{ double x1,y1,x2,y2,x3,y3;public: Triangle(double a=0,double&nbs...

新县18112197110: C++中,类的私有成员变量放在什么段中,是在堆栈段中吗? -
蛮呼醒脑: 你说的应该是对象的成员变量 如 begar(不懂编程的程序员) 所说,对象的成员变量就放在对象内 如果对象本身是堆栈(SS)里的,那么它的(非静态)数据成员也在堆栈里 如果对象本身是堆里的,那么它的(非静态)数据成员也在堆里 如果对象本身是DS里的,那么它的数据成员也在DS里 所谓public/private/protected规定的是成员的“存取”权限 而SS/DS/Heap是“存储”方式,与前者没有任何关系

新县18112197110: c++类中的私有数据成员 -
蛮呼醒脑: 首先,相同类的不同对象可以访问彼此的私有数据,qht9624543 的回答是错的.就语言语法定义来说,类的成员函数当然可以访问本类的所有私有数据.如果这个类声明了友元(friend)类或友元函数,那么这些友元类和函数也可以访问其私有...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网