一、C语言下封装
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct Person
{
char m_name[64];
int m_age;
};
void Personplay(struct Person * p)
{
printf("%s 在打游戏\n", p->m_name);
}
void test01()
{
struct Person p1;
strcpy(p1.m_name, "LaoWang");
Personplay(&p1);
}
struct Dog
{
char m_name[64];
int m_age;
};
void DogEat(struct Dog * d)
{
printf("%s在吃狗粮\n", d->m_name);
}
void test02()
{
struct Dog d;
strcpy(d.m_name, "WangCai");
DogEat(&d);
//**可以成功调用另一个类并进行访问**
struct Person p;
strcpy(p.m_name, "LaoWang");
DogEat(&p);
}
int main()
{
void test02();
system("pause");
return EXIT_SUCCESS;
}
C语言的封装:缺点1-c语言下没有做类型转换的检测,缺点2-将属性和行为分离。
二、C++封装
#include<iostream>
using namespace std;
//struct Person
class Person
{
public:
char m_name[64];
int m_age;
void Personplay()
{
cout << m_name << "在打游戏" << endl;
}
};
struct Dog
{
char m_name[64];
int m_age;
void Dogeat()
{
cout << m_name << "在吃狗粮" << endl;
}
};
void test01()
{
Person p1;
strcpy(p1.m_name, "LaoWang");
Dog d1;
strcpy(d1.m_name, "WangCai");
d1.Dogeat();
p1.Dogeat(); //编译器报错 Person类不可调用Dog类
}
//C++封装,将属性和行为作为一个整体,来表现生活中的事和物
//C++下的struct和class区别:struct默认权限:public 公共权限。class默认权限:private 私有权限
//将这些成员 加以权限控制
//类权限:public公共权限,protected保护权限 private私有权限
int main()
{
test01();
return 0;
}
C++封装:将属性和行为作为一个整体,来表现生活中的事和物,将这些成员,加以权限控制
权限:1. public 类内可以访问 类外也可以访问
-
protected 类内可以访问 类外不可以访问(子类可以访问)
-
private 类内可以访问 类外不可以访问(子类也不可以访问)
三、尽量将成员属性设置为私有
#include<iostream>
#include<string>
using namespace std;
class Person1
{
public: //提供公共接口
//设置姓名
void setName(string name)
{
m_Name = name;
}
//获取姓名
string getName()
{
return m_Name;
}
//获取年龄
int getAge()
{
return m_Age;
}
//设置喜欢
string setLove(string love)
{
m_Love=love;
}
private:
string m_Name;//可读可写
int m_Age=18;//只读
string m_Love;//只写
};
//将成员属性设置为私有好处:自己控制属性的读写权限
//将用户传入的数据 进行检测
void test03()
{
Person1 p1;
p1.setName("Tom");
p1.setLove("Jerry");
cout << "Name is:" << p1.getName() << endl;
cout << "Age is:" << p1.getAge() << endl;
//cout << "Love is" << p1.setLove() << endl;//不可访问 因为只有只写状态
int main()
{
test03();
return 0;
}
四、extern C浅析
1)用途是C++在运行文件时候,extern C包含的内容用C语言方式连接
#pragma once
#ifdef __cplusplus //两个下划线 + C plus plus
extern "C" {
#endif
#include<stdio.h>
void show();
void test();
#ifdef __cplusplus
}
#endif