在 C++ 中声明可见性/访问的方式有何不同?
Posted
技术标签:
【中文标题】在 C++ 中声明可见性/访问的方式有何不同?【英文标题】:How do the ways to declare visibility/access in C++ differ? 【发布时间】:2012-12-04 23:24:26 【问题描述】:这可能是一个愚蠢的问题,但是在 C++ 中如何在类中声明访问权限方面,在效率、优化等方面有什么不同吗?
作为一个具体的例子,在类中声明每个属性/方法的可见性与在类中声明可见性(即私有/公共/受保护的)“块”相比,效率更高、效率更低或两者都没有。
例如是下面的代码:
class Foo
private:
int member1;
string member2;
...
Thing memberN;
public:
int member2;
Thing member3;
...
string memberM;
比:更有效:
class Foo
private:
int member1;
private:
string member2;
private:
...
private:
Thing memberN;
public:
int member2;
public:
Thing member3;
public:
...
public:
string memberM;
【问题讨论】:
测试一下。使用计时器和配置文件来检查是否存在差异,或者只是比较两种方法的汇编器输出。 我的理解是,可访问性是一个编译时的概念,并且不会发出代码来强制执行可访问性。例如,可以通过指针访问私有成员(不干净,违反很多事情,但可行)。 【参考方案1】:都是一样的。访问修饰符供编译器使用,并产生相同的输出二进制代码。
【讨论】:
编译需要多少时间? @thed0ctor 这取决于编译器实现。如果使用多个修饰符而不是一个修饰符,理论上会慢一些,但这完全无关紧要以上是关于在 C++ 中声明可见性/访问的方式有何不同?的主要内容,如果未能解决你的问题,请参考以下文章