30.1cm等于多少mm:C++的问题

来源:百度文库 编辑:高校问答 时间:2024/05/05 06:15:12
#include <iostream>
using namespace std;
class myClass{
private:
int number;
public:
myClass();
void change(int i);
};
myClass::myClass(){
number=10;
cout<<number<<endl;
}
void myClass::change(int i){
number=i;
cout<<number<<endl;
}
void test(myClass test){
cout<<"test"<<endl;
}
void test(myClass* test){
cout<<"test"<<endl;
}
void main(){
myClass tes;
tes.change(23);
test(tes);
test(&tes);
}
最后的两个test函数,引用的参数分别是一个类和一个指向类的指针
按照我的理解,调用test(tes),会重新产生一个类,并调用一下构造函数,但是运行结果却不是这样。
请教各位,这两个函数的区别?

这里调用的不是默认的构造函数,而是拷贝构造函数,如果你自己写个拷贝构造函数,就可以看出来了。

在类的声明里面加个myClass(const myClass &src);
在外部加个定义
myClass::myClass(const myClass &src){
number = src.number;
cout<<number<<endl;
}
这下知道了吧。

大概是单纯的把这个class压入堆栈