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