‘壹’ 构造函数的访问控制:私有、公有、静态的区别
私有:类内部访问,其他类滚粗
公有:爱谁谁,不管什么类均可无条件访问
静态:必须无参数,静态构造函数是C#的一个新特性,在编程过程中用处并不广,它的主要目的是用于初始化一些静态的变量。因为这个构造函数是属于类的,而不属于任何一个实例,所以这个构造函数只会被执行一次,而且是在创建此类的第一个实例或引用任何静态成员之前,由.NET自动调用。
‘贰’ C++类内的构造函数无法访问私有成员,怎么回事
你Triangle的构造函数不是public的啊
‘叁’ 为什么构造函数里面可以直接用成员运算符引用私有成员 不是要用成员函数访问吗跟对象的封装性不就矛盾了
构造函数也是成员函数,当然可以直接访问私有数据成员了
‘肆’ 为什么拷贝构造函数中的参数能直接调用类的私有成员变量
调用自己的成员没任何限制,又不是调用别人的,也没调用继承的
‘伍’ C++ 为什么类的构造函数可以访问类的私有成员
类的私有成员是对类外部而言的,类的成员函数内部属于类的内部,所以可以访问任何私有成员。
类自己的构造函数也是类的成员函数,所以也可以访问类自己的私有成员。
类的外部主要是两种情况:
1
类对象的作用域
2
类的派生类内部
3
类的静态成员被使用的地方
‘陆’ C++构造函数无参数怎么给类的私有成员赋值
因为在类内部,数据成员是可以无限制访问的
#include<iostream>
usingnamespacestd;
classPoint{
intx,y;
public:
Point();//构造函数必须为公共成员
Point(constint&a,constint&b);//带参数的构造函数
Point(Point&p);//拷贝构造函数,参看拷贝构造内容
intgetX()
{
returnx;
}
intgetY()
{
returny;
}
};
Point::Point()//构造函数必须为公共成员
{
x=0;
y=0;
}
Point::Point(constint&a,constint&b)//带参数的构造函数
{
x=a;
y=b;
}
Point(Point&p)//拷贝构造函数,用于拷贝初始化
{
x=p.x;
y=p.y;
}
intmain()
{
Pointa;//调用无参数构造函数
pointb(5,7);//调用有参数构造函数
pointc=b;//调用拷贝构造函数
return0;
}
提问题的时候最好把代码格式化一下,这乱码基本没人看
‘柒’ 在拷贝构造函数中为什么可以访问引用对象的私有变量
按我个人的理解,封装是针对类,显然复制构造函数是在这个类内部,举个例子,我们都是人类,假设我们每个人(对象)都有一个u盘,而复制构造函数就是我愿意把我的u盘借给你拷贝信息,通过我这个对象,你在人类这个类中可以用我的u盘,但是对于其他类,我不借。另外,我还听人说过这样一句话,特别好:方便编程.同类同象互为友元.这个破坏封装.但是利于设计。希望对你有帮助,不过有什么问题,你最好找高手当面交流,这样更容易理解。
‘捌’ java中定义的私有变量,后面该如何用构造函数来调用
java里面没有全局变量的定义,但是你这里的意思好像就是要一个这样的全局变量。你可以定义一个类用于保存你要的变量,然后访问这个类就行。如果要在你下面的这个方法中访问main方法中的变量是做不到的
‘玖’ 为什么C++中复制构造函数可以调取其他对象中的私有变量
num(const num&s)是成员函数。所以可以访问同类型对象的私有成员。
‘拾’ 派生类构造函数无法访问私有数据成员,请问为什么
既然是“私有”的,那意思就是不让“别人”访问,只允许自己的成员函数操作,不然就不叫“私有”的了。子类中继承的基类私有成员仍是私有的,子类可以访问“自己”继承的基类的私有成员,效果在绝大多数情况下是一样的。