当前位置:首页 » 密码管理 » c静态成员函数的访问

c静态成员函数的访问

发布时间: 2024-10-13 09:03:08

Ⅰ 静态成员函数为什么不能访问本类中的非静态成员

和静态数据成员一样,静态成员函数是类的一部分,而不是对象的一部分。如果要在类外调用公用的静态成员函数,要用类名和域运算符“∷”。如 Box∷volume( ); 实际上也允许通过对象名调用静态成员函数,如 a.volume( ); 但这并不意味着此函数是属于对象a的,而只是用a的类型而已。 静态成员函数的作用是为了能处理静态数据成员。 可以说,静态成员函数与非静态成员函数的根本区别是:非静态成员函数有this指针,静态成员函数并不属于某一对象,它与任何对象都无关,静态成员函数没有this指针。由此决定了静态成员函数不能访问本类中的非静态成员。 在C++程序中,静态成员函数主要用来访问静态数据成员,而不访问非静态成员。假如在一个静态成员函数中有以下语句: cout<<height<<endl; //若height已声明为static,则引用本类中的静态成员,合法 cout<<width<<endl; //若width是非静态数据成员,不合法 但是,并不是绝对不能引用本类中的非静态成员,只是不能进行默认访问,因为无法知道应该去找哪个对象。如果一定要引用本类的非静态成员,应该加对象名和成员运算符“.”。如 cout<<a.width<<endl; //引用本类对象a中的非静态成员

Ⅱ 在c++中,类的静态成员函数可以通过类的指针访问类的非静态数据成员吗

可以的,不过要间接访问。看下面的例子

#include<iostream>
usingstd::cout;
usingstd::endl;
classA{
intdata;
public:A(inti):data(i)
{
cout<<"new"<<endl;
};
A():data(0)
{
cout<<"newA"<<endl;
};
A(constA&a){
data=a.data;
cout<<"newA"<<endl;
};
~A()
{
cout<<"delete"<<endl;
};
staticvoidaccess(A*a)//静态成员,参数为对象指针
{
a->data++;
cout<<a->data<<endl;//通过指针访问内部非静态对象;但不能用this指针直接来访问
}
};

intmain()
{
Ab(2);
b.access(&b);//静态成员函数访问
return0;
}

Ⅲ c++类中静态成员函数怎么访问类私有变量

如果私有变量是静态的,可以直接访问,或通过类名::变量名访问;
如果私有变量是实例成员,要先创建一个类的对象,再通过对象名.变量名访问,或先new一个对象,将new的返回值赋给一个指针,通过指针名->变量名访问或通过(*指针名).变量名访问。

热点内容
win7用户文件夹改名 发布:2024-10-13 11:16:53 浏览:699
小区门密码如何重置 发布:2024-10-13 11:16:08 浏览:882
投诉上传评证 发布:2024-10-13 11:03:55 浏览:425
pn结算法 发布:2024-10-13 10:58:12 浏览:264
网络课程脚本 发布:2024-10-13 10:24:56 浏览:503
网上买电脑如何查看配置 发布:2024-10-13 10:17:29 浏览:795
遗传算法非线性约束 发布:2024-10-13 10:09:16 浏览:780
图像扭曲的算法 发布:2024-10-13 09:56:11 浏览:235
c语言的精髓 发布:2024-10-13 09:56:09 浏览:815
嵌入式系统高级c语言编程 发布:2024-10-13 09:16:26 浏览:87