关闭

二、C++ 构造函数

标签: C++构造函数
141人阅读 评论(0) 收藏 举报
分类:

C++ 构造函数

一、基本概念

构造函数成员函数的一种

  1. 名字与类名相同,可以有参数,不能有返回值(void也不行)
  2. 作用是对对象进行初始化,如给成员变量赋初值
  3. 如果定义类时没写构造函数,则编译器生成一个默认的无参数的构造函数

默认构造函数无参数,不做任何操作。

  1. 如果定义了构造函数,则编译器不生成默认的无参数的构造函数
  2. 对象生成时构造函数自动被调用。对象一旦生成,就再也不能在其上执行构造函数
  3. 一个类可以有多个构造函数

二、基本使用方法

class Complex {
    private :
        double real, imag;
    public:
        Complex( double r, double i = 0);
};
Complex::Complex( double r, double i) {
    real = r; imag = i;
}
Complex c1; // error, 缺少构造函数的参数
Complex * pc = new Complex; // error, 没有参数
Complex c1(2); // OK
Complex c1(2,4), c2(3,5); // OK
Complex * pc = new Complex(3,4); // OK

三、构造函数在数组中的使用

3.1 使用示例1

class CSample {
    int x;
    public:
        CSample() {
            cout << "Constructor 1 Called" << endl;
        }
        CSample(int n) {
            x = n;
            cout << "Constructor 2 Called" << endl;
        }
};

int main(){
    CSample array1[2];
    cout << "step1"<<endl;
    CSample array2[2] = {4,5};
    cout << "step2"<<endl;
    CSample array3[2] = {3};
    cout << "step3"<<endl;
    CSample * array4 =
    new CSample[2];
    delete []array4;
    return 0;
}

输出:
Constructor 1 Called
Constructor 1 Called
step1
Constructor 2 Called
Constructor 2 Called
step2
Constructor 2 Called
Constructor 1 Called
step3
Constructor 1 Called
Constructor 1 Called

3.2 使用示例2

class Test {
    public:
        Test( int n) { } //(1)
        Test( int n, int m) { } //(2)
        Test() { } //(3)
};

Test array1[3] = { 1, Test(1,2) };
// 三个元素分别用(1),(2),(3)初始化
Test array2[3] = { Test(2,3), Test(1,2) , 1};
// 三个元素分别用(2),(2),(1)初始化
Test * pArray[3] = { new Test(4), new Test(1,2) };
//两个元素分别用(1),(2) 初始化

四、小结

  1. 构造函数不能有返回值,作用是初始化
  2. 构造函数在调用时,传入的参数的个数必须符合其声明时拥有的个数
  3. 在新建某个类的对象时,会根据其传入的参数的类型和个数,调用相应的构造函数
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:33827次
    • 积分:1165
    • 等级:
    • 排名:千里之外
    • 原创:86篇
    • 转载:0篇
    • 译文:0篇
    • 评论:6条
    最新评论