C++新增标识符:
explicit:声明非隐式调用构造或拷贝构造函数
friend:声明友元类或者友元函数
inline:声明内联函数,会消耗内存但提高执行速度
private:声明私有继承或者私有成员
protected:声明受保护继承或者受保护成员
public:声明公有继承或者公有成员
virtual:声明虚继承或者是虚函数
this: 声明一种实体,仅在类的非静态成员中使用,是指向类的对象的指针右值
C++含义有改变标识符:
1.const:声明常成员变量或者常成员函数
2.static:声明静态成员
const int i=10;
//int *p=&i; //error
//const-->const
//非const-->const
//const 不能-->非const
const int* ptr=&i;//1
int *p2=(int*)&i;//2
*p2=20;
cout<<"i:"<<i<<endl;
cout<<"*p2:"<<*p2<<endl;
const int *p;//常量指针
const *int p;//指针常量
const *int const p;//指向常量的常量指针
class Point
{
public:
Point() :
value(10) //对于const成员变量,在类里面声明变量时就初始化或者使用初始化列表进行初始化。
{
value = 10;//其他函数里面初始化是不允许的。
}
void setX(const int x)
{
this->x=x;
}
int getX() const //常成员函数
{
return x;
}
private:
int x;
const int value = 10;//对于const成员变量,在类里面声明变量时就初始化或者使用初始化列表进行初始化。
};
#include<iostream>
using namespace std;
class A
{
public:
A()
{
cout<<"A()"<<endl;
count++;
}
~A()
{
cout<<"~A()"<<endl;
count--;
}
void out()//非静态成员方法
{
cout<<"count:"<<count<<endl;//非静态成员方法可以引用静态成员
}
static int getCount() //静态成员方法
{
//cout<<x<<endl;//error,静态成员方法不能引用非静态成员
return count;
}
private:
int x;
static int count;//静态成员变量声明,可以完全脱离对象而存在
};
//静态成员变量必须要初始化,并且要在类外初始化
int A::count; //默认为0
void main()
{
//A a1;
//
既然创建出了对象实例,count就不可能为0,矛盾
//if(a1.getCount() == 0)
//{
//
//}
/* //只有在count是public情况下使用
if(A::count == 0)
{
cout<<"count\n";
}
*/
if(0 == A::getCount())
{
cout << A::getCount << ", " << A::getCount();
}
}