【发布时间】:2018-11-20 18:33:26
【问题描述】:
我正在阅读有关静态函数的内容,据说如果该函数是静态的,那么您只能在同一个文件中使用它。测试后,我意识到这不是真的,因为如果你在文件中包含一个静态函数,你仍然可以在另一个文件中使用该函数。然后我阅读了一个说明,您实际上只能在同一个翻译单元中使用静态函数。好的,这是有道理的,因为它意味着 .cpp + 包含,但即使该函数不是静态的,除非包含该文件,否则您仍然无法使用它。那么,如何在不包含任何内容的情况下从另一个翻译单元访问一个函数,静态函数有什么意义呢?
Main.cpp
#include "Staticf.h"
void main()
{
visible();
}
静态.h
#pragma once
#include <iostream>
using namespace std;
static void visible()
{
cout << "Static function is visible\n";
}
这编译好了。如果我将该函数设为非静态并删除 #include "Staticf.h" 我将无法在 Main 中使用它。那么,如果您也不能访问非静态函数,为什么还需要静态函数呢?
【问题讨论】:
-
如果包含某些东西,包含的文件和包含它的文件是同一个文件。
-
是的,我知道,这不是问题
-
打电话给不知道地址、姓名和电话号码的人有什么意义?
-
#include <iostream> using namespace std;是你可以在头文件中采用的最糟糕的路径。 -
FWIW,这是对 C 的保留。在 C++ 中,如果要隐藏函数,可以使用命名空间。
标签: c++ static-functions