需要关于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; }
出生和雇佣是课程日期的对象 编辑2:这是头文件中定义的函数的屏幕截图。再次感谢。 非常感谢!!!! 编辑3:我想我知道了。因此,它最初使用一个引用来初始化Date对象,但随后它还使用一个复制构造函数将dateOfBirth分配给第14行中的birthDate,对吗需要关于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,该参数将保持不变,但传入的原始参数不一定是常量
- 另外,如果在函数参数名之前声明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