Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.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++_C_Linker_Translation Unit - Fatal编程技术网

C++ 类方法内部链接

C++ 类方法内部链接,c++,c,linker,translation-unit,C++,C,Linker,Translation Unit,在C中,我可以在头文件中声明一个结构和一些公共函数,而一些“私有”函数可以在源文件中声明为静态函数。例如: 福安 typedef结构Foo{ ... }傅; 无效功能1(Foo*Foo); 富科 #包括“foo.h” 静态void func2(Foo*Foo){…} void func1(Foo*Foo){…} 在这种情况下,func2是内部链接的。C++类方法可能吗?如果我写: 福岛水电站 struct Foo{: void func1(); 私人: void func2(); }; f

在C中,我可以在头文件中声明一个结构和一些公共函数,而一些“私有”函数可以在源文件中声明为静态函数。例如:

福安

typedef结构Foo{
...
}傅;
无效功能1(Foo*Foo);
富科

#包括“foo.h”
静态void func2(Foo*Foo){…}
void func1(Foo*Foo){…}
在这种情况下,
func2
是内部链接的。C++类方法可能吗?如果我写:

福岛水电站

struct Foo{:
void func1();
私人:
void func2();
};

func2
仍将从外部链接。是否有一种方法使它内部保持它在结构中?

,你可以在C++中声明普通静态函数,就像在C中,在任何翻译单元中一样。但它们将是普通的静态函数,而不是类方法

类的方法不限于单个翻译单元。对于具有许多方法的大型类来说,将其分解为两个或多个不同的翻译单元并不少见。当然,来自一个翻译单元的私有方法可以按顺序调用其他私有方法。因此,它们之间的联系必须是外部的


<>这就是标准C++给你的一切。除此之外,如果不考虑可移植性,还可以使用特定于实现的扩展。例如,gcc提供。“内部”可见性似乎意味着静态链接。我还没有验证过,但属性也被注意到,也适用于C++代码,而不仅仅是C.< /P>不。C++不这样工作。没有什么能阻止你在翻译单元中声明一个静态函数,比如C,但它不会是一个类方法。@Sam为什么不把它作为一个答案发布呢?