C++ 构造函数

通常在定义变量时要初始化,在定义类对象时,成员属性并没有得到初始化。 C++ 类提供了一种特殊的函数- 构造函数
构造函数:其 作用是用来初始化类成员属性 。空类中存在一个 默认的无参数的构造,函数名为当前类名,无返回值(不是void就是单纯啥也没有)。
class CTest{
 CTest(){ } //默认无参构造
};

要注意的是写在构造函数函数体内的只是赋值并不是真正的初始化,真正的初始化是写在构造函数的初始化参数列表里面的。

CTest(int b):m_a(10),m_b(b),m_c('c'){
    m_a = 20; //赋值
}
构造函数并不需要我们手动调用,在定义对象的时候会自动调用,这个默认的无参构造是编译器给提供的,函数体代码为空,所以在定义对象时虽然调用了,但并没有这正给成员初始化。所以多数情况下需要我们手动重构构造函数。
只要重构了任何的构造函数,编译器将不会再提供那个默认的无参构造了。
一个类中的 构造函数允许存在多个 ,他们是 函数重载 的关系,重构的构造函数 可以指定参数 来符合我 们需要的初始化过程。
定义 多个对象可能会执行不同的构造 ,这就要看在定义对象时如何指定参数了,会根据参数的类型、数量自动匹配对应的构造,但 一个对象最终只能执行其中一个构造
#include<iostream>
using namespace std;

class Cat {
public:
    Cat() {
        height = 10;
        weight = 20;
    }
    Cat(double w) {
        height = 10;
        weight = w;
    }
    Cat(double w, double h) {
        height = h;
        weight = w;
    }
private:
    double height;
    double weight;
public:
    double get_weigth() {
        return weight;
    }
    void set_weigth(double num) {
        weight = num;
    }
    double get_heigth() {
        return height;
    }
    void set_heigth(double num) {
        height = num;
    }
};
int main()
{
    Cat tom;
    cout << "猫tom的身高:"<< tom.get_heigth() << "猫的体重:" <<
        tom.get_weigth() << endl;//猫tom的身高:10猫的体重:20
    Cat tony(5);
    cout << "猫tony的身高:" << tony.get_heigth() << "猫的体重:" <<
        tony.get_weigth() << endl;//猫tony的身高:10猫的体重:5
    Cat marry(5,80);
    cout << "猫marry的身高:" << marry.get_heigth() << "猫的体重:" <<
        marry.get_weigth() << endl;//猫marry的身高:80猫的体重:5
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值