面试题答案
一键面试- 拷贝构造函数调用位置:
- 在
func(myObj)
这一行代码处调用了拷贝构造函数。
- 在
- 原因:
- 函数
func
的参数是MyClass
类型的对象obj
,这是值传递。当调用func(myObj)
时,会创建一个myObj
的副本作为函数func
的参数obj
。在创建这个副本的过程中,会调用MyClass
类的拷贝构造函数,因为要使用已存在的myObj
对象来初始化新的obj
对象。所以控制台会输出“Copy Constructor called”。
- 函数
执行顺序如下:
- 首先在
main
函数中创建myObj
对象,调用构造函数,输出“Constructor called”。 - 调用
func(myObj)
,创建myObj
的副本obj
,调用拷贝构造函数,输出“Copy Constructor called”。 - 进入
func
函数,输出“Inside func”。 func
函数结束,obj
对象析构,输出“Destructor called”。main
函数结束,myObj
对象析构,输出“Destructor called”。