这个问题的主要部分是关于为类内的私有(private)数据成员创建公共(public)只读访问器的正确且计算效率最高的方法。具体来说,利用consttype&引用来访问变量,例如:classMyClassReference{private:intmyPrivateInteger;public:constint&myIntegerAccessor;//AssignmyPrivateIntegertotheconstantaccessor.MyClassReference():myIntegerAccessor(myPrivateInteger){}};然而,目前解决这个问题的既定方法是利
我什么时候应该创建一个函数private,为什么这是个好主意? 最佳答案 当您不需要其他对象或类来访问该函数时,您应该将函数设为private,而您将从类中调用它。坚持最小权限原则,只允许访问绝对必要的变量/函数。任何不符合此标准的内容都应为private。 关于c++-何时/为什么在类里面将函数设为私有(private)?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4505
我什么时候应该创建一个函数private,为什么这是个好主意? 最佳答案 当您不需要其他对象或类来访问该函数时,您应该将函数设为private,而您将从类中调用它。坚持最小权限原则,只允许访问绝对必要的变量/函数。任何不符合此标准的内容都应为private。 关于c++-何时/为什么在类里面将函数设为私有(private)?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4505
我可以这样做吗?classA{...};classB:privateA{constA&foo()const{return*((constA*)this);}};我可以采用从基类私有(private)继承的子类并将其转换为基类的公共(public)版本吗?如果没有虚拟方法,我可以这样做吗?我的猜测是肯定的,但我想确保它是安全/便携的。 最佳答案 是的,您可以:标准§5.4/7:...thefollowingstatic_castandreinterpret_castoperations(optionallyfollowedbyacon
我可以这样做吗?classA{...};classB:privateA{constA&foo()const{return*((constA*)this);}};我可以采用从基类私有(private)继承的子类并将其转换为基类的公共(public)版本吗?如果没有虚拟方法,我可以这样做吗?我的猜测是肯定的,但我想确保它是安全/便携的。 最佳答案 是的,您可以:标准§5.4/7:...thefollowingstatic_castandreinterpret_castoperations(optionallyfollowedbyacon
我一直认为头文件是一种描述类的“公共(public)接口(interface)”,在这种情况下,最好将私有(private)字段和函数保留在.cpp文件中。我知道私有(private)字段需要在标题中,以便其他类可以知道一个类的实例将消耗多少内存,但是当我要编写一个私有(private)帮助函数时,我突然想到这个函数可以设为静态,在这种情况下,它根本不需要成为“类的一部分”,它可以很容易地成为类定义的.cpp文件中的常规函数。然后我想到所有私有(private)函数可能会通过接受类字段的指针/引用而不是期望在类中定义而被重写为静态.这将消除在头文件中声明任何私有(private)函
我一直认为头文件是一种描述类的“公共(public)接口(interface)”,在这种情况下,最好将私有(private)字段和函数保留在.cpp文件中。我知道私有(private)字段需要在标题中,以便其他类可以知道一个类的实例将消耗多少内存,但是当我要编写一个私有(private)帮助函数时,我突然想到这个函数可以设为静态,在这种情况下,它根本不需要成为“类的一部分”,它可以很容易地成为类定义的.cpp文件中的常规函数。然后我想到所有私有(private)函数可能会通过接受类字段的指针/引用而不是期望在类中定义而被重写为静态.这将消除在头文件中声明任何私有(private)函
我有以下类(class):classBritneySpears{public:intgetValue(){returnm_value;};private:intm_value;};这是一个外部库(我无法更改)。我显然不能改变m_value的值,只能读取它。即使从BritneySpears派生也行不通。如果我定义以下类会怎样:classAshtonKutcher{public:intgetValue(){returnm_value;};public:intm_value;};然后做:BritneySpearsb;//HerecomestheuglyhackAshtonKutcher*a=
我有以下类(class):classBritneySpears{public:intgetValue(){returnm_value;};private:intm_value;};这是一个外部库(我无法更改)。我显然不能改变m_value的值,只能读取它。即使从BritneySpears派生也行不通。如果我定义以下类会怎样:classAshtonKutcher{public:intgetValue(){returnm_value;};public:intm_value;};然后做:BritneySpearsb;//HerecomestheuglyhackAshtonKutcher*a=
classCHIProjectData:publicQObject{public:CHIProjectData();CHIProjectData(QMapaProjectData,CHIAkmMetaData*apAkmMetaData=0,QObject*parent=0);private:QMapm_strProjectData;CHIAkmMetaData*m_pAkmMetaData;};CHIProjectData::CHIProjectData(QMapaProjectData,CHIAkmMetaData*apAkmMetaData,QObject*aParent):QO