需要关于C+中参考资料的建议+;上课 我用C++来编程第八版,代码的一部分说, Employee::Employee( const string &first, const string &last, const Date &dateOfBirth, const DateOfBirth, const Date &dateOfHire) : firstName(first), lastName(last), birthDate(dateOfBirth), hireDate(dateOfHire) { cout <<"Employee object constructor: " << firstName << ' '<< lastName <<endl; }

需要关于C+中参考资料的建议+;上课 我用C++来编程第八版,代码的一部分说, Employee::Employee( const string &first, const string &last, const Date &dateOfBirth, const DateOfBirth, const Date &dateOfHire) : firstName(first), lastName(last), birthDate(dateOfBirth), hireDate(dateOfHire) { cout <<"Employee object constructor: " << firstName << ' '<< lastName <<endl; },c++,class,private,public,C++,Class,Private,Public,出生和雇佣是课程日期的对象 编辑2:这是头文件中定义的函数的屏幕截图。再次感谢。 非常感谢!!!! 编辑3:我想我知道了。因此,它最初使用一个引用来初始化Date对象,但随后它还使用一个复制构造函数将dateOfBirth分配给第14行中的birthDate,对吗 抄袭。(编辑:不查看“日期”构造函数就无法确定)涉及两个接口,“员工”通过引用获取参数,但实际工作需要“日期”类型的构造函数,它的接口并不重要 另外,如果在函数参数名之前声明const,该参数将保持不变,但传入的原始参数不一定是常量

出生和雇佣是课程日期的对象

编辑2:这是头文件中定义的函数的屏幕截图。再次感谢。 非常感谢!!!! 编辑3:我想我知道了。因此,它最初使用一个引用来初始化Date对象,但随后它还使用一个复制构造函数将dateOfBirth分配给第14行中的birthDate,对吗

  • 抄袭。(编辑:不查看“日期”构造函数就无法确定)涉及两个接口,“员工”通过引用获取参数,但实际工作需要“日期”类型的构造函数,它的接口并不重要

    • 另外,如果在函数参数名之前声明const,该参数将保持不变,但传入的原始参数不一定是常量,对吗
    • 另外,您可以对非常量类使用常量函数,对吗?声明函数常量的要点是,该函数不能编辑在其中的类中声明的任何变量
    是。

    它是一个复制构造函数(参数是相同类型的对象)

    您应该更加注意阅读参数部分!按地址(引用)传递参数比按值传递快。使用
    const&
    不允许更改函数外部的参数值。

    考虑函数:

    void foo(const Date& dt)
    {
       Date local = dt;
       // Use 'local'
       // Modify 'local'
       // But cannot modify the original/source 'dt'
    }
    
    int main()
    {
       Date abc;
       foo(abc);
    }
    

    foo中的第一行是执行复制,没有引用赋值,尽管函数参数中存在
    &
    。即使您在
    main
    中将
    abc
    声明为
    const
    ,也会在
    foo

    中执行复制,让我们一次执行一点。将日期参数声明为:

    const Date& dateOfBirth
    
    表示日期通过引用传递(未复制),且引用对象可由函数修改。接下来会发生什么取决于Employee类的
    Date
    成员的声明方式

    它们将是:

    Date birthDate;        //the parameter is passed to the copy constructor of Date
    const Date birthDate;  //as above, and the birthDate object cannot then be changed
    const Date& birthDate; //birthDate is set to a reference to the object passed in, which then cannot be changed using this reference
    Date& birthDate;       //you would get a compiler error in the Employee constructor.
    
    如果
    Date
    s在堆栈的第一行中声明为
    Date
    复制构造函数(引用同一类型的构造函数,最好是常量引用)必须将参数作为
    常量日期$
    ,并且怀疑它在内部将其属性设置为传入对象的属性

    如果
    Date
    的复制构造函数采用了非常量引用,那么当您试图将常量传递给非常量参数时,Employee构造函数上将再次出现编译器错误

    (如果它按值获取参数,这也是一个错误,因为需要调用复制构造函数来调用复制构造函数,以此类推!)

    可以对非
    const
    对象或指向对象的非
    const
    引用或指针调用
    const
    方法,这是正确的

    最后,我在这里使用了与您相同的样式来声明引用等等,但是您应该阅读“从右到左”的顺序来声明这些类型,因为它是最一致和首选的方法。例如,我们更喜欢

    Date const$ dateOfBirth
    


    即使它们实际上是相同的。

    这取决于成员的声明(在类主体中),这里没有显示。这些类成员变量是如何声明的?作为参考?主要功能不是回答您的问题所需的功能。我们需要查看
    Employee
    类。除非您对
    Employee
    类有比问题中显示的更多的信息,否则您没有足够的信息来确定第一个问题的答案。如果
    出生日期
    雇佣日期
    是参考资料,那么你的答案是错误的。那么我是对的?firsName(first)、lastName(last)、birthDate(dateOfBirth)、hireDate(dateofher)即使原始对象不是常量,也可以在参数中使用const,对吗?另外,你能确认一下我的编辑吗?谢谢。非常量对象可以指定给常量引用,也可以由常量引用引用。但是反向是不可能的。int&hello(){int a=5;return a;}调用函数是否接收到对a的引用?我应该在调用函数中执行int&b=hello()吗?谢谢很抱歉出现此问题。此代码将发出警告,无法正常工作。请你自己清楚地理解这些概念,而不是在这里问所有的问题。如果卡住了,问一个新问题。除了上面提到的所有问题,还有一个输入错误:firsName不是firstName。
    Date const$ dateOfBirth
    
    const Date& dateOfBirth