Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将方法从公共移动到私有的效果_C++ - Fatal编程技术网

C++ 将方法从公共移动到私有的效果

C++ 将方法从公共移动到私有的效果,c++,C++,我正在做一些代码清理工作,并开始对某件事感到疑惑。 假设我有一个程序可以编译、运行,并且通常执行它应该执行的操作。 现在,我将某个类成员方法从public移到private(或protected),代码仍然编译无误。 理论上是否可能出现这样一种情况,即程序的行为会因代码更改而改变? 如果是这样,我希望看到一个例子。方法的访问说明符不会显式地影响查找(而是在查找完成后进行检查),因此我认为在没有未定义行为的情况下,功能不会有任何隐藏的更改(例如,您有另一个版本的类,其中函数仍然是公共的),不会

我正在做一些代码清理工作,并开始对某件事感到疑惑。

假设我有一个程序可以编译、运行,并且通常执行它应该执行的操作。

现在,我将某个类成员方法从public移到private(或protected),代码仍然编译无误。
理论上是否可能出现这样一种情况,即程序的行为会因代码更改而改变?


如果是这样,我希望看到一个例子。

方法的访问说明符不会显式地影响查找(而是在查找完成后进行检查),因此我认为在没有未定义行为的情况下,功能不会有任何隐藏的更改(例如,您有另一个版本的类,其中函数仍然是公共的),不会有任何更改。如果其他没有朋友访问权限的东西在它是公共的时候调用它,而您将它更改为私有,它将不再具有访问权限,然后将不会编译。是的,但这不符合问题。我声明它在更改后仍会编译。@zero298这不是编译时的问题,而是OP的是referring to。他们想知道它是否仍在编译。是否会有任何不明显的负面影响。例如,即使它仍在编译,移动是否会触发其他行为。目前我想不出一个实际“有效”的示例,但我认为您可能能够在现在私有的方法得到的地方构造一些东西“替换”为超类中的一个方法,这会改变你的程序。或者可能是某个多重继承的东西替换了另一个方法。@hatchet:我的魔法技能很低。你能创建一个例子吗?你是说,给定性能良好的程序,不可能构造这样的例子吗?如果你有一个
公共方法(int x)
和一个
公共方法(char x)
,并将第二个方法设为私有,将
方法('0')
调用该方法的int版本或给出编译器错误?@Guntram Blohm:已检查。更改后编译将失败