目录
一、封装与访问控制
二、构造函数与析构函数
三、 拷贝构造函数
一、封装与访问控制
1、封装的优势:
1)隐藏实现细节,提供公共的访问方式;
2)提高了代码的复用性;
3)提高了安全性。
2、分别分析private public protected的作用
private修饰的内容只能在本类中访问。
public修饰的内容是公共的,谁都可用访问。
protected表示受保护的权限,继承中用的比较多。子类能够访问父类中的内容
代码实现
#include
using namespace std;
class Student{
private:
string m_name;
int m_age;
int m_id;
public:
void setName(string name)
{
m_name=name;
}
string getName()
{
return m_name;
}
void setAge(int age)
{
m_age=age;
}
int getAge()
{
return m_age;
}
void setId(int id)
{
m_id=id;
}
int getId()
{
return m_id;
}
};
int main()
{
Student s;
s.setName("zhangsan");
s.setAge(34);
s.setId(012);
cout<<"姓名:"<
运行结果为:
二、构造函数与析构函数1、构造函数:在创建对象时为对象的成员进行初始化;
1)构造函数名和类名相同
2)没有返回值,不用写void
3)允许多个参数,可以重载
2、析构函数:在对象销毁前,执行一些清理工作 ;
1)析构函数名和类名相同,前面加上~
2)没有返回值,不用写void
3)不允许多个参数,无参的,不可以重载
注意:
构造函数和析构函数由编译器自动调用一次,无需手动调用。
如果没有提供构造函数,编译器会自动提供一个无参的空实现的构造函数。
如果没有提供析构函数,编译器会自动提供一个无参的空实现的析构函数。
#include
using namespace std;
class Student{
public:
string m_name;
int m_age;
Student(){
m_name="";
m_age=0;
cout<<"无参的构造函数执行了..."<
这个是定义无参函数的:
这个没有定义无参函数的:
另外:通过输出可以看出,定义多少个构造函数,就会输出多少个析构函数
三、 拷贝构造函数构造函数分类:
1、按照有无参数:有参构造和无参构造(默认)
2、按照类型分类:拷贝构造和普通构造
如果我们提供了构造函数,系统将不再提供无参的构造函数
拷贝构造函数的调用方式:显示调用和隐式调用
#include
using namespace std;
class Student{
public:
string m_name;
int m_age;
Student(){
m_name="";
m_age=0;
cout<<"无参的构造函数执行了..."<
输出结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)