我们在面向对象编程时,属性是私有的(这样就可以自由的控制读写权限),然后就可以提供一些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;
}