2017-04-03 2 views
0

Gibt es in C++ einen Unterschied zwischen Namensbindung und Namenssuche in? Der Arbeitsentwurf C++ 14 Standard (N4296) definiert Namenssuche in (3.4) alsUnterschied zwischen Namenssuche und Namensbindung in C++

Namenssuche assoziiert die Verwendung eines Namens mit einer Deklaration (3.1) dieses Namens.

ich keine Definition für Namensbindung in der Norm, aber die IBM Knowledge Center Dokumentation für ihre XL C/C++ Compiler definiert finden:

Namensbindung ist der Prozess der Suche nach der Erklärung für jeden Namen, der explizit oder implizit in einer Vorlage verwendet wird.

Die einzigen Unterschiede zwischen den beiden Definitionen scheint zu sein, dass (1) Name der spezifischen Bindung an einen Namen in einer Vorlage und (2) Name Bindung bezieht sich auf einen Namen verwendet, bezieht sich, während Namen-Lookup auf die Verwendung verweist eines Namens.

Abschnitt (13.3) zu Überladungsauflösung im C++ - Standard erwähnt jedoch häufig, aber ohne es zu definieren. Die Art und Weise, wie "binding" in diesem Zusammenhang verwendet wird, lässt den Schluss zu, dass die Bindung sich auf die Assoziation eines Arguments mit einem Funktionsparameter bezieht.

Zunächst scheint sich diese Definition von jeder der beiden anderen Definitionen zu unterscheiden, dachte, dass sie der Definition des Namens entspricht, wenn wir annehmen, dass der Name der Funktion an seine Deklaration gebunden ist Arten von Argumenten und Parametern. Das ist nicht genau der Sinn, der in Abschnitt (13.3) verwendet wird, aber ich versuche, den Standard ohne eine richtige Definition zu verstehen.

Kurz gesagt, wenn jemand eine gute Definition von "Name Bindung" oder "verbindlich" hat, wäre ich dankbar.

+0

"Abschnitt (13.3) über die Überladungsauflösung im C++ - Standard erwähnt jedoch häufig die Bindung", aber nicht Namensbindung, die nur einmal im gesamten Dokument verwendet wird, möglicherweise ein Fehler. –

Antwort

0

die relevanten Teile Wilson & Clark Vergleichs Programmiersprachen gelesen, ich glaube, ich ein besseres Verständnis des Themas haben. Wenn ich richtig vermute, umfasst der Begriff "bindend" einen Gamut verwandter Begriffe, einschließlich der Bindung der Namensdeklaration, der Bindung des Namenstyps, der Deklarationsreferenzbindung, der Referenzwertbindung und der Name-Wert-Bindung.

"Name suchen" scheint ein Synonym für Namensdeklaration zu sein. Die anderen Verwendungen der "Bindung" im C++ 14-Standard betreffen verschiedene Kombinationen der anderen Bindungsarten.

Bitte korrigieren Sie mich, wenn ich im Unrecht habe!

Verwandte Themen