1,先看一个例子:
class Address { ... }; // where someone lives
class Person
{
public:
Address& personAddress() { return address; }
private:
Address address;
};
Person scott();
Address& addr = scott.personAddress(); //addr看作一个全局对象
这个时候addr乘了scott.address的另一个名称,可以通过addr任意读写address.
因此,scott.addres不再是private,变成了public.
2,相同的道理,适用于指针成员.
例如:
class Person
{
public:
Address * personAddress() { return &address; }
private:
Address address;
};
Address *addrPtr = scott.personAddress(); // same problem as above
改写*addrPtr,即可改变address的值.
3,也适用于成员函数.
如:
class Person; // forward declaration
typedef void (Person::*PPMF)();
class Person
{
public:
static PPMF verificationFunction()
{
return &Person::verifyAddress;
}
private:
Address address;
void verifyAddress();
};
下面这个动作:
PPMF pmf = scott.verificationFunction();
(scott.*pmf)(); //等同于调用scott.verificationFunction.
分享到:
相关推荐
条款25:考虑写出一个不抛异常的swap函数 consider support for a non-throwing swap. 5. 实现 implementations 条款26:尽可能延后变量定义式的出现时间 postpone variable definitions as long as possible. 条款...
1、为什么要宁以pass-by-reference-to-const 替换 pass-by-value 效率方面 缺省情况下,C++以by value 方式传递对象至(或来自)函数。 除非你另外指定,否则函数参数都是以实际实参的副本为初值,而调用段所获得的...
条款25:考虑写出一个不抛异常的swap函数 5.实现 条款26:尽可能延后变量定义式的出现时间 条款27:尽量少做转型动作 条款28:避免返回handles指向对象内部成分 条款29:为“异常安全”而努力是值得的 条款30...
条款30: 避免这样的成员函数:其返回值是指向成员的非const指针或引用,但成员的访问级比这个函数要低 条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引 条款32: 尽可能地推迟变量的...
条款30:避免这样的成员函数,其返回值是指向成员的非CONST指针或引用 条款31:千万不要返回局部对象的引用,也不要返回函数内部用NEW初始化的指针 条款32:尽可能推迟变量的定义 条款33:明智的使用INLINE 条款34:将...
This function delete all the reference or list objects that user has forgotten to delete. Parameters: In: None Out: None Returns: Returns EDS_ERR_OK if successful. In other cases, see ...
开源项目-sdboyer-constext.zip,constext: Cons() your contexts
条款30: 确保目的范围足够大 条款31: 了解你的排序选项 条款32: 如果你真的想删除东西的话在remove-like的算法后紧接上erase 条款33: 当心在包含指针的容器使用remove-like的算法 条款34: 注意哪些算法需要排序...
条款29:需要一个一个字符输入时考虑使用istreambuf_iterator 算法 条款30:确保目标区间足够大 条款31:了解你的排序选择 条款32:如果你真的想删除东西的话就在类似remove的算法后接上erase 条款33:提防在...
条款30: 确保目的范围足够大 条款31: 了解你的排序选项 条款32: 如果你真的想删除东西的话在remove-like的算法后紧接上erase 条款33: 当心在包含指针的容器使用remove-like的算法 条款34: 注意哪些算法需要排序...
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long ' ' Creates or opens a communications resource and returns a handle ' that can be used to access the resource. ' ...
徐彤老师耗时三年倾心制作,专业录制,通俗,细致的讲解了C++ 编程从入门到高级
徐彤老师耗时三年倾心制作,专业录制,通俗,细致的讲解了C++ 编程从入门到高级
或您喜欢的任何其他方式。 用法 工作与正常的任何类型的条件if作品有。 允许在代码块中使用条件的结果(类似于C# out var语法)。 import ifConst from 'if-const' ; // a little function to simulate ...
.\XXXX.cpp(27): error 1720: (Info -- assignment operator for class 'Object' has non-const parameter) void * operator new(size_t size, int i=0) {return 0;} // ECPP Items 8,9,10 .\XXXX.cpp(31): error ...
这意味着常量可用于需要内插变量的上下文中,例如哈希键或字符串。 我真的需要这个吗? 不。你已经可以使用一些难看的语法获得内插常量: my %handlers = ( HTTP_OK() => sub { ... }, ); 或者 "Status code ...
需要一个一个字符输入时考虑使用istreambuf_iterator 算法 条款30:确保目标区间足够大 条款31:了解你的排序选择 条款32:如果你真的想删除东西的话就在类似remove的算法后接上erase 条款33:提防在...
function SendSimpleSMS(const usernamepassword:string;to_: ArrayOfString;fromtext: string; const isflash: Boolean): ArrayOfString;function SendSimpleSMS2(const usernamepasswordto_fromtext:string;is...
表示pch是一个字符串常指针,该指针只能指向该字符串,不可以在让他指向另一字符串。但该字符串的内容可以变化。 const int a; //a是个整型常量 int const a; //同上 const int *a; //a是一个指向整型常量的...
1.15 简单程序:打印一行文本-------------------------------------------12 1.16 简单程序:两个整数相加-------------------------------------------15 1.17 内存的概念----------------------------------...