C++ 面向对象编程:属性私有化、构造函数

我们在面向对象编程时,属性是私有的(这样就可以自由的控制读写权限),然后就可以提供一些public的方法来访问以及修改我们的属性(这个就是平常所提到的接口这些。如果是可读可写,一般是提供一个get和set函数,对应可写,提供一个set函数,对应可读,提供一个get函数),可见以下代码示例:

#include<iostream>
using namespace std;

class People {
public:
    string setmsg1(string name) {
        msg1 = name;
    }
    string getmsg1() {
        return msg1;
    }
    int getmsg2() {
        return msg2;
    }
    void setmsg3() {
        msg3 = 2;
    }
private:
    string msg1; // 可读、可写
    int msg2 = 3; // 只读
    int msg3; // 只写
};
int main() {
    People p;
    p.setmsg1("name_msg1");
    p.getmsg1();
    p.getmsg2();
    p.setmsg3();
    return 0;
}

构造函数的作用:在函数体内部,将所有成员变量初始化。构造函数需要注意以下几点:函数名称与类名一致,返回值类型不需要写,构造函数可以有参数。可见以下代码示例:

#include<iostream>
using namespace std;

class People {
public:
    People() {
        msg1 = "ee";
        msg2 = 2;
        msg3 = 3;
        cout << 1 << endl;
    }
    People(string aa) { //有参数的构造函数
        msg1 = aa;
        msg2 = 2;
        msg3 = 3;
        cout << 2 << endl;
    }
private:
    string msg1; // 可读、可写
    int msg2; // 只读
    int msg3; // 只写
};
int main() {
    People p1; // 调用无参数构造函数
    People p2("ee");// 调用有参构造函数
    People p3();// 这里不会调用构造函数,不是实例化的过程,只是声明一个函数,类似 int getMsg()
    People p4{};// 这里会调用默认构造函数了
    People p5 = People("ee"); // 生成一个匿名对象,然后赋给p5;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值