c – 此指针作为指向对象的指针
假设employee是一个类…. print是它的非静态成员函数,它打印其私有数据成员x的值…现在我读到如果print是一个常量函数,那么编译器传递给它的this指针是这种类型
如果print是非常量函数,则该指针的类型为
….现在的问题是,我还没有将类员工的对象声明为常量,那么如果将print声明为常量函数,那么’this’如何指向一个常量的employee对象…. 解决方法
考虑冰淇淋甜筒.假设你去冰淇淋店订购“香草锥”.你会得到一个带有一勺香草冰淇淋的圆锥.然后你可以在上面添加一个樱桃,但它仍然是你订购的 – 一个香草锥.
物体有点像冰淇淋蛋筒.常数就像樱桃一样.您可以在不更改对象本身的情况下将constness添加到对象: class Foo { public: void DoIt() {}; } foo; Foo* regular_foo = &foo; // OK const Foo* const_foo = &foo; // Also OK 回到冰淇淋店.这次订购洒上香草锥.他们给你一个锥形的1勺香草冰淇淋和一些洒在上面的糖果.现在你不能在不改变你订购的东西的情况下取下洒水.如果你取下洒水,你将没有“香草锥洒”,你只需要一个香草锥. class Foo { public: void DoIt() {}; }; const Foo foo; Foo* regular_foo = &foo; // Not OK! const Foo* const_foo = &foo; // But this is OK 编辑: 为了更严格地对待上述类比,你可以阅读@Potatoswatter引用的标准段落: 4.4资格转换[conv.qual]
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |