c++中的const权限
void Print()
{
cout << _year << "-" << _mouth << "-" << _day << endl;
}
void f(const Date& d)
{
d.Print();
}
this指针为非const的,故需要
//void Print(const Date* this)
void Print() const
{
cout << _year << "-" << _mouth << "-" << _day << endl;
}
const的修饰规则
//const在*前 修饰指针指向的内容 *后修饰指针本身
//const Date* p1; *p1
//Date const* p2; *p2
//Date* const p3; p3
成员函数调用const成员函数
void f1()//void f1(Date* this)
{
f2();//this->f2(this); 正确
}
void f2() const
{}
//
void f3()
{}
void f4() const //void f4(const Date* this)
{
f3();//this->f(this); 错误
}
static成员
计算一个类中产生了多少对象
#include<iostream>
using namespace std;
int n = 0;
class A
{
public:
A()
{
++n;
}
A(const A& a)
{
++n;
}
};
A f1(A a)
{
return a;
}
int main()
{
A a1;//对象是由构造函数或拷贝构造产生的
A a2;
f1(a1);
f1(a2);
cout << n << endl;
return 0;
}
6个对象
A& f1(A& a)
{
return a;
}
2个对象
private:
static int n;//声明 n属于这个类的所有对象
int A::n = 0;//定义
提高代码的封装性。
static修饰成员函数
static int GetN()
{
//_a = 10;
return n;
}
private:
int _a;
没有this指针不能访问非静态成员。