【发布时间】:2019-12-16 22:51:42
【问题描述】:
(我来自C世界,我是C++初学者,所以简单回答问题)
在 c++ 中,参数是按值传递的。所以我尝试了下面的代码来了解它是如何工作的。
#include <iostream>
using namespace std;
class MyClass {
int a;
public:
MyClass() {
a = 0;
cout<<"Default Constructor call\n"; }
MyClass(int x) {
a = x;
cout<<"Constructor call\n"; }
~MyClass() {
cout<<"Destructor call\n"; }
};
void myfoo(MyClass arg) {}
int main() {
cout<<"Obj declaration\n";
MyClass obj(10);
cout<<"Function call\n";
myfoo(obj);
cout<<"End of main\n";
}
析构函数在函数结束时调用,构造函数在开始时不调用,因为没有构造函数MyClass(MyClass& xxx)。
那么,对象 arg 是如何在函数中构造的?一个简单的内存副本?总是有一个构造函数 MyClass(MyClass& xxx) 是否足够或更好
【问题讨论】:
-
关于using namespace std...
标签: c++