10 友元
通过让函数成为类的友元,可以赋予该函数与类的成员函数相同的访问权限;如果想在类外访问类的私有成员变量,可以有两种方法:
1.类成员函数int getn()const { return n; } //n是成员变量
2.使用友元函数
11 临时对象
如果对象变量只用到一次,就直接用匿名对象,编译器可以对匿名对象进行优化,减少对象的创建,提高效率。如果可能尽量使用临时对象。临时对象会及时释放
#include<iostream>
#include<string>
using namespace std;
class Ctest
{
private:
string name;
int cnt;
public:
Ctest(string name,int cnt);
~Ctest();
void showname();
friend int showcnt(const Ctest& c);
};
Ctest::Ctest(string lname,int lcnt):name(lname),cnt(lcnt)
{
cout <<this->name << "构造完成!" << endl;
}
Ctest::~Ctest()
{
cout <<this->name << "析构完成!" << endl;
}
void Ctest::showname()
{
cout << this->name << endl;
}
int showcnt(const Ctest& c)
{
cout << c.cnt << endl;
}
int main()
{
Ctest a("no1",10);
Ctest b = Ctest("no2",20); //匿名对象,先创建一个对象,然后复制给b
//用临时对象来初始化一个新对象,编译器一般会优化成直接用创建临时对象的参数来创建新对象
cout << "************************"<< endl;
a=Ctest("tempv",100); //如果可能尽量使用临时对象。临时对象会及时释放
cout << "************************"<< endl;
cout << "成员函数显示私有成员变量name:" << endl;
a.showname();
cout << "友元函数显示私有成员变量cnt" <<endl;
showcnt(b);
return 0;
}
输出结果: