gpt4 book ai didi

c++ - 需要有关 C++ 类引用的建议

转载 作者:行者123 更新时间:2023-11-30 04:00:13 24 4
gpt4 key购买 nike

我正在使用 C++ 如何编程第 8 版,代码的一部分说,

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;
}

我很困惑。这个 Employee 类是通过复制还是通过引用来初始化 2 个 Date 类对象?这本书说它是由一个复制构造函数,但我在每个名称之前看到一个 &ampersand 。此外,如果您在函数参数名称之前声明 const,则该参数未更改,但传入的原始参数不一定是常量,对吗?

此外,您可以对非常量类使用常量函数,对吗?声明函数常量的要点是该函数不能编辑在其所在的类中声明的任何变量?

这里是main()中的实现

int main() 
{
Date birth(7, 24, 1949);
Date hire (3, 12, 1988);
Employee manager( "Bob", "Blue", birth, hire);
}

birth 和 hire 是 Date 类的对象

编辑 2:这是头文件中定义的函数的屏幕截图。再次感谢。 http://tinypic.com/r/qznf6g/8 http://tinypic.com/r/2qdr3tz/8非常感谢!!!!编辑 3:我想我明白了。所以它最初使用引用来初始化 Date 对象,但随后它还使用复制构造函数将 dateOfBirth 分配给第 14 行中的 birthDate,对吗?

最佳答案

考虑一个函数:

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

中执行

关于c++ - 需要有关 C++ 类引用的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26419547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com