昨天舍友介绍了一个准备IT面试的网站,牛客网,一个面向程序员的“猿题库”,做了两套C++的选择题,得分不是太理想,基本只能拿到60%的分数。是得根据做过的题目,慢慢整理知识点。
static
修饰符,可以通过双冒号即<类名>::<静态成员名>使用静态成员名>类名>class A
{
public:
void init() {}
static print() {}
};
void main()
{
A::init(); //编译会出错
A::print();
}
void main()
{
A a;
a.init(); //编译会出错
a.print();
}
class A
{
public:
void init() {
print();
}
static print() {
cout << m << endl;
}
private:
int m;
};
void main()
{
A a;
a.print();
}
class A
{
public:
void init() {}
static print() {
cout << m << endl;
}
private:
int m;
};
void main()
{
A a;
a.print();
}
//会编译出错,静态成员函数属于整个类,类实例化对象之前就已经分配空间,
//而类的非静态成员必须在类实例化之后才有内存空间,相当于调用一个未声明的变量,出错。
class A
{
public:
A() {m++;}
~A() {m--;}
static print() {
cout << m << endl;
}
private:
static int m;
};
void main()
{
A a;
a.print();
}
//编译不报错,连接时报错,类的静态成员变量在使用前必须先初始化,而且不能在类内初始化,
//可以在main函数之前使用`int A::m = 0`进行初始化,且不能在类内部进行初始化。