您的位置:首页 > 编程语言 > C语言/C++

[C++_5]友元_临时对象

2014-03-01 20:27 309 查看

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;
}
输出结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  友元 临时对象