之前的lambda小结中分析了传入普通内置类型对象的访问控制
这里将分析传入自定义类型对象的访问控制
例1
class TempCls
{
public:
void CallLambdaFunc();
private:
void TestFunc();
int m_n1;
};
void TempCls::CallLambdaFunc()
{
cout << "TCls::CallLambdaFunc() " << endl;
m_n1 = 10;
int n1 = 10;
[=]() { TestFunc(); cout << "lambda TCls::m_n1 :" << m_n1 << endl; m_n1 = 12;}();
cout << " TCls::m_n1 :" << m_n1 << endl;
}
void TempCls::TestFunc()
{
cout << "TCls::TestFunc() " << endl;
}
调用函数CallLambdaFunc() 显示结果
TCls::CallLambdaFunc()
TCls::TestFunc()
lambda TCls::m_n1 :10
TCls::m_n1 :12
说明即便是值传递 也能调用对象的私有函数和私有属性
同时 传入对象的属性是可写的 并影响原有对象
这点和引用传递的方式很像