#include<iostream>
#include <string>
using namespace std;
class A {
public :
/*A() { cout << "调用了无参数的构造函数" << endl; }*/
//给a赋值之后,可以被带一个参数的调用,也可以被不带参数的调用
A(int a=100) { cout << "调用了int单参数的构造函数" <<a<< endl; }//如果A a2调用,a就是100;如果 A a2(100)调用,a就是100;
//同理,给ab赋值之后,可以被带一个参数、两个参数的、不带参数的调用,所以其实只写下面一个就可以
A(int a,int b) { cout << "调用了int两个参数的构造函数"<<a<<b << endl; }
const int a=10;
};
int main(void)
{
A a1(); //这是声明一个a1函数,返回值是类类型(可以返回类类型,想想asp.net中传递的就是类的实例)
A a2;//这才是调用无参数的构造函数(就是默认构造函数)
//如果删掉A 中的A() { cout << "调用了无参数的构造函数"; }会报错,因为写了个int参数的构造函数,会自动丢弃掉默认构造函数
A(10);
A(100, 500);
system("pause");
return 0;
}
当我有常量和引用类型需要在生成类的时候赋值,就需要在构造函数里绑定,如下
#include<iostream>
#include <string>
using namespace std;
class A {
public :
const int c1 = 10, c2;
int h;
int &p;//引用就是绑定把p绑定到h上,修改p的值,h也会变,所以必须初始化,引用不占用内存
A(int a = 10, int b = 10):c2(a),p(a)
{ cout << "调用了int两个参数的构造函数" << a << b << endl;
h = a;
}
};
int main(void)
{
A a1; //这是声明一个a1函数,返回值是类类型(可以返回类类型,想想asp.net中传递的就是类的实例)
a1.p = 100;
cout << a1.p;
system("pause");
return 0;
}