1、第一种规则
当类中没有定义任何一个构造函数时,c++编译器会提供默认无参构造函数和默认拷贝构造函数
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
using namespace std;
class Test1{
public:
void print(){
cout<<this->a<<endl;
cout<<this->b<<endl;
cout<<"普通成员函数"<<endl;
}
int getA(){return a;}
int getB(){return b;}
private:
int a;
int b;
};
int main()
{
//没有定义任何一个构造函数和析构函数 ,编译器会提供默认的构造函数
Test1 t1;//调用默认的构造函数
cout<<"hello...."<<endl;
system("pause");
return 0;
}
2、第二种规则
当类中定义了拷贝构造函数时,c++编译器不会提供无参数构造函数
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
using namespace std;
class Test1{
public:
//有参构造函数
Test1(int a,int b)
{
this->a = a;
this->b = b;
cout<<"有参构造函数"<<endl;
}
public:
void print(){
cout<<this->a<<endl;
cout<<this->b<<endl;
cout<<"普通成员函数"<<endl;
}
int getA(){return a;}
int getB(){return b;}
private:
int a;
int b;
};
int main()
{
//定当类中定义了拷贝构造函数时,c++编译器不会提供无参数构造函数
Test1 t1;//调用默认的构造函数
cout<<"hello...."<<endl;
system("pause");
return 0;
}
3、第三种规则
当类中定义了任意的非拷贝构造函数(即:当类中提供了有参构造函数或无参构造函数),c++编译器不会提供默认无参构造函数
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
using namespace std;
class Test1{
public:
//有参构造函数
Test1(int a,int b)
{
this->a = a;
this->b = b;
cout<<"有参构造函数"<<endl;
}
public:
void print(){
cout<<this->a<<endl;
cout<<this->b<<endl;
cout<<"普通成员函数"<<endl;
}
int getA(){return a;}
int getB(){return b;}
private:
int a;
int b;
};
int main()
{
//定当类中定义了拷贝构造函数时,c++编译器不会提供无参数构造函数
Test1 t1;//调用默认的构造函数
cout<<"hello...."<<endl;
system("pause");
return 0;
}
4、第四种规则
默认拷贝构造函数成员变量简单赋值