超载parantheses c ++是一个好主意

时间:2018-03-13 15:52:17

标签: c++ overloading

我用c ++编程了几个月,我开始理解核心了。目前我正在尝试使用类和继承创建一个日历程序(只是为了让对象编程变得更加舒适),几周前我学会了操作重载。

我想知道,为一个对象重载parantheses是一个坏主意,这样我可以写这个,或者可能发生错误,因为编译器可能会把它混淆为其他东西(构造函数或类似的东西)?



    Ausnahme ausgelöst: "StreamJsonRpc.RemoteInvocationException" in mscorlib.dll
    Ausnahme ausgelöst: "StreamJsonRpc.RemoteInvocationException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.Threading.Tasks.TaskCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "StreamJsonRpc.RemoteInvocationException" in mscorlib.dll
    Ausnahme ausgelöst: "StreamJsonRpc.RemoteInvocationException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.OperationCanceledException" in mscorlib.dll
    Ausnahme ausgelöst: "System.Threading.Tasks.TaskCanceledException" in mscorlib.dll
    Der Thread 0x5518 hat mit Code 0 (0x0) geendet.
    "devenv.exe" (CLR v4.0.30319: DefaultDomain): "C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Transactions.resources\v4.0_4.0.0.0_de_b77a5c561934e089\System.Transactions.resources.dll" geladen. Das Modul wurde ohne Symbole erstellt.
    System.Transactions Critical: 0 : http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Reliability/Exception/UnhandledUnbehandelte AusnahmeDefaultDomainSystem.InvalidCastException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089Die angegebene Umwandlung ist ungültig.   bei Roslyn.Utilities.EnumUtilities.ConvertEnumUnderlyingTypeToUInt64(Object value, SpecialType specialType)
       bei Microsoft.CodeAnalysis.SymbolDisplay.AbstractSymbolDisplayVisitor.AddNonFlagsEnumConstantValue(INamedTypeSymbol enumType, Object constantValue)
       bei Microsoft.CodeAnalysis.SymbolDisplay.AbstractSymbolDisplayVisitor.AddEnumConstantValue(INamedTypeSymbol enumType, Object constantValue, Boolean preferNumericValueOrExpandedFlags)
       bei Microsoft.CodeAnalysis.SymbolDisplay.AbstractSymbolDisplayVisitor.AddNonNullConstantValue(ITypeSymbol type, Object constantValue, Boolean preferNumericValueOrExpandedFlagsForEnum)
       bei Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor.AddConstantValue(ITypeSymbol type, Object constantValue, Boolean preferNumericValueOrExpandedFlagsForEnum)
       bei Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor.VisitParameter(IParameterSymbol symbol)
       bei Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol.Accept(SymbolVisitor visitor)
       bei Microsoft.CodeAnalysis.CSharp.SymbolDisplay.ToDisplayParts(ISymbol symbol, SemanticModel semanticModelOpt, Int32 positionOpt, SymbolDisplayFormat format, Boolean minimal)
       bei Microsoft.CodeAnalysis.CSharp.SymbolDisplay.ToMinimalDisplayParts(ISymbol symbol, SemanticModel semanticModel, Int32 position, SymbolDisplayFormat format)
       bei Microsoft.CodeAnalysis.CSharp.Symbol.Microsoft.CodeAnalysis.ISymbol.ToMinimalDisplayParts(SemanticModel semanticModel, Int32 position, SymbolDisplayFormat format)
       bei Microsoft.CodeAnalysis.CSharp.SignatureHelp.AbstractCSharpSignatureHelpProvider.Convert(IParameterSymbol parameter, SemanticModel semanticModel, Int32 position, IDocumentationCommentFormattingService formatter, CancellationToken cancellationToken)
       bei Microsoft.CodeAnalysis.CSharp.SignatureHelp.InvocationExpressionSignatureHelpProvider.<>c__DisplayClass14_0.<ConvertMethodGroupMethod>b__1(IParameterSymbol p)
       bei System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
       bei System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
       bei System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
       bei Microsoft.CodeAnalysis.CSharp.SignatureHelp.InvocationExpressionSignatureHelpProvider.ConvertMethodGroupMethod(IMethodSymbol method, InvocationExpressionSyntax invocationExpression, SemanticModel semanticModel, ISymbolDisplayService symbolDisplayService, IAnonymousTypeDisplayService anonymousTypeDisplayService, IDocumentationCommentFormattingService documentationCommentFormattingService, CancellationToken cancellationToken)
       bei Microsoft.CodeAnalysis.CSharp.SignatureHelp.InvocationExpressionSignatureHelpProvider.<>c__DisplayClass11_0.<GetMethodGroupItems>b__7(IMethodSymbol m)
       bei System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
       bei System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
       bei System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
       bei Microsoft.CodeAnalysis.CSharp.SignatureHelp.InvocationExpressionSignatureHelpProvider.GetMethodGroupItems(InvocationExpressionSyntax invocationExpression, SemanticModel semanticModel, ISymbolDisplayService symbolDisplayService, IAnonymousTypeDisplayService anonymousTypeDisplayService, IDocumentationCommentFormattingService documentationCommentFormattingService, ISymbol within, IEnumerable`1 methodGroup, CancellationToken cancellationToken)
       bei Microsoft.CodeAnalysis.CSharp.SignatureHelp.InvocationExpressionSignatureHelpProvider.<GetItemsWorkerAsync>d__5.MoveNext()
    --- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
       bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
       bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       bei System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
       bei Microsoft.CodeAnalysis.SignatureHelp.AbstractSignatureHelpProvider.<GetItemsAsync>d__14.MoveNext()
    --- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
       bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
       bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       bei Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.SignatureHelp.Controller.Session.<ComputeItemsAsync>d__11.MoveNext()System.InvalidCastException: Die angegebene Umwandlung ist ungültig.
       bei Roslyn.Utilities.EnumUtilities.ConvertEnumUnderlyingTypeToUInt64(Object value, SpecialType specialType)
       bei Microsoft.CodeAnalysis.SymbolDisplay.AbstractSymbolDisplayVisitor.AddNonFlagsEnumConstantValue(INamedTypeSymbol enumType, Object constantValue)
       bei Microsoft.CodeAnalysis.SymbolDisplay.AbstractSymbolDisplayVisitor.AddEnumConstantValue(INamedTypeSymbol enumType, Object constantValue, Boolean preferNumericValueOrExpandedFlags)
       bei Microsoft.CodeAnalysis.SymbolDisplay.AbstractSymbolDisplayVisitor.AddNonNullConstantValue(ITypeSymbol type, Object constantValue, Boolean preferNumericValueOrExpandedFlagsForEnum)
       bei Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor.AddConstantValue(ITypeSymbol type, Object constantValue, Boolean preferNumericValueOrExpandedFlagsForEnum)
       bei Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor.VisitParameter(IParameterSymbol symbol)
       bei Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol.Accept(SymbolVisitor visitor)
       bei Microsoft.CodeAnalysis.CSharp.SymbolDisplay.ToDisplayParts(ISymbol symbol, SemanticModel semanticModelOpt, Int32 positionOpt, SymbolDisplayFormat format, Boolean minimal)
       bei Microsoft.CodeAnalysis.CSharp.SymbolDisplay.ToMinimalDisplayParts(ISymbol symbol, SemanticModel semanticModel, Int32 position, SymbolDisplayFormat format)
       bei Microsoft.CodeAnalysis.CSharp.Symbol.Microsoft.CodeAnalysis.ISymbol.ToMinimalDisplayParts(SemanticModel semanticModel, Int32 position, SymbolDisplayFormat format)
       bei Microsoft.CodeAnalysis.CSharp.SignatureHelp.AbstractCSharpSignatureHelpProvider.Convert(IParameterSymbol parameter, SemanticModel semanticModel, Int32 position, IDocumentationCommentFormattingService formatter, CancellationToken cancellationToken)
       bei Microsoft.CodeAnalysis.CSharp.SignatureHelp.InvocationExpressionSignatureHelpProvider.<>c__DisplayClass14_0.<ConvertMethodGroupMethod>b__1(IParameterSymbol p)
       bei System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
       bei System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
       bei System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
       bei Microsoft.CodeAnalysis.CSharp.SignatureHelp.InvocationExpressionSignatureHelpProvider.ConvertMethodGroupMethod(IMethodSymbol method, InvocationExpressionSyntax invocationExpression, SemanticModel semanticModel, ISymbolDisplayService symbolDisplayService, IAnonymousTypeDisplayService anonymousTypeDisplayService, IDocumentationCommentFormattingService documentationCommentFormattingService, CancellationToken cancellationToken)
       bei Microsoft.CodeAnalysis.CSharp.SignatureHelp.InvocationExpressionSignatureHelpProvider.<>c__DisplayClass11_0.<GetMethodGroupItems>b__7(IMethodSymbol m)
       bei System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
       bei System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
       bei System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
       bei Microsoft.CodeAnalysis.CSharp.SignatureHelp.InvocationExpressionSignatureHelpProvider.GetMethodGroupItems(InvocationExpressionSyntax invocationExpression, SemanticModel semanticModel, ISymbolDisplayService symbolDisplayService, IAnonymousTypeDisplayService anonymousTypeDisplayService, IDocumentationCommentFormattingService documentationCommentFormattingService, ISymbol within, IEnumerable`1 methodGroup, CancellationToken cancellationToken)
       bei Microsoft.CodeAnalysis.CSharp.SignatureHelp.InvocationExpressionSignatureHelpProvider.<GetItemsWorkerAsync>d__5.MoveNext()
    --- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
       bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
       bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       bei System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
       bei Microsoft.CodeAnalysis.SignatureHelp.AbstractSignatureHelpProvider.<GetItemsAsync>d__14.MoveNext()
    --- Ende der Stapelüberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
       bei System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
       bei System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
       bei Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.SignatureHelp.Controller.Session.<ComputeItemsAsync>d__11.MoveNext()
    Ein Ausnahmefehler des Typs "System.InvalidCastException" ist in Microsoft.CodeAnalysis.Workspaces.dll aufgetreten.
    Die angegebene Umwandlung ist ungültig.

1 个答案:

答案 0 :(得分:-3)

重载此运算符是C ++中的一个基本概念,在function objects中广泛使用,这是一个典型的比较函数示例。

您可以保存使用此运算符,但现在通常lambda函数优先于函数对象。