1. c++中,类的普通成员函数通过this指针访问普通成员变量,那访问静态成员变量时是怎么实现的
静态成员变量的位置是确定的,不要对象就可以直接访问。
比如下面代码的两种引用方法是等价的:
classTest{
public:
staticintms_Data;
};
intmain(){
Testt;
std::cout<<t.ms_Data<<std::endl;
std::cout<<Test::ms_Data<<std::endl;
}
2. 静态成员的访问格式是什么麻烦举个例子,谢谢
静态成员在类中可以分为静态成员函数和静态成员变量。
访问时有两种访问方式,使用类名加作用域分辨符加成员名,此其一;也可以使用对象名.成员名访问。如:
classA
{
public:
staticvoidTest()
{
}
public:
staticinta;
};
intA:a=0;
intmain()
{
A::Test();//正确
A::a=100;//正确
Aa;
a.Test();//正确
a.a=100;//正确
A*p=&a;
p->Test();//正确
p->a=100;//正确
return0;
}
要注意的是,在访问时,还是需要遵守访问权限(private/protected/public)的规则。
3. 静态成员变量(或称类变量)是通过____来访问的
可用的访问方式
1、类名::静态成员变量,这个是最通用的方式
2、类对象.静态成员变量
4. C++类中静态对象成员的访问!
类其实是个模型。
而对象就是找个这个模型制作的实体。
比如,类是造车的图纸,对象就是找个图纸造出的汽车。
类的成员是分级别的:protect,public,private。
在类内部定义的函数可以访问任何一个变量,或者调用任何的类内部的函数,但是,如果被定义成private的话,对象是不能调用的,也就是对象只能调用定义为public的数据,如果你确实需要调用某个private的变量,你可以定义一个public的函数来返回这个变量,比如:
class
d
{
private:
int
a;
public:
int
getint(){return
a;}
......
}
这里你的对象不能调用a的,
也就是不能
int
b;
d
d;//假设已经写好了构造函数
b=d.a;//这是错误的,
但是你可以
b=d.getint();
这样就可以把a的值给b了。
所有的public的函数都可以通过
<对象>.<函数名>
的方式来调用
5. PHP面向对象练习题 1、访问静态成员变量时,可以使用: A、类名 B、self C、this D、parent 2、下面叙述正
self吧。
6. 访问类的静态成员变量的时候出现undefined reference to
静态成员变量需要在类体外定义,类体里的只算是声明:看如下的修改:
#include<iostream>
usingnamespacestd;
classCSingleton{
//其他成员
public:
staticCSingleton*GetInstance();
intage;
private:
CSingleton(){};
staticCSingleton*m_pInstance;
};
CSingleton*CSingleton::m_pInstance=NULL;//需要在这定义
CSingleton*CSingleton::GetInstance(){
if(m_pInstance==NULL)
//判断是否第一次调用
m_pInstance=newCSingleton();
returnm_pInstance;
}
intmain(){
CSingleton*p1=CSingleton::GetInstance();
p1->age=10;
cout<<p1->age;
return0;
}
7. 能不能通过类名直接访问静态内部类的成员变量
外部类,内部类,匿名类,外部类就是两个类并列的class A {} class B {},内部类:class A { class B {}},B可以直接使用包涵它的类的成员变量,内部类不能被除包涵类以外的类调用;还有就是匿名类,也是内部类 classA{new {}}省略定义类名直接定义方法和使用,这个适用于代码比较简单且这个类不需要被其他类调用。并且,外部类可以访问内部类的方法以及静态方法和数据域。
8. C++中,如何访问类的静态成员!
1.静态成员函数中不能调用非静态成员。
2.非静态成员函数中可以调用静态成员。因为静态成员属于类本身,在类的对象产生之前就已经存在了,所以在非静态成员函数中是可以调用静态成员的。
3.静态成员变量使用前必须先初始化(如int MyClass::m_nNumber = 0;),否则会在linker时出错。
4.在类的非静态成员函数中使用类的静态成员
class Point
{
public:
void init()
{
output();
}
static void output()
{
}
};
void main()
{
Pointpt;
pt.output();
}
5.使用类的静态成员变量
#include <stdio.h>
class Point
{
public:
Point()
{
m_nPointCount++;
}
~Point()
{
m_nPointCount--;
}
static void output()
{
printf("%d\n", m_nPointCount);
}
private:
static int m_nPointCount;
};
int Point::m_nPointCount = 0;
void main()
{
Pointpt;
pt.output();
}
9. 对静态成员的使用要注意什么。
1.在赋值的时候需要注意,因为这个静态成员的值在内存中只有一份,如果多个地方赋值,你要确定最后赋值的时候是否是你所需要的值.
(类的静态变量是该类的对象所共有的,即是所有对象共享变量。所以建议尽量少用静态变量)
2.调用的时候 类名.静态方法名
3.静态方法只能访问类的静态成员,不能访问类的非静态成员