面向对象编程的程序基本单位是类。
类是数据和操作数据的函数的封装。
类的对象使用自己的方法完成对数据的操作。
类可以隐藏数据和操作细节,对象通过类接口与外部通讯。
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
#include <windows.h>
//C++类的继承实现代码重用, C重用 函数
//类的封装实现权限,封装,数据与代码合为一体。C封装主要是函数
//封装可以锁定代码的权限,锁定的数据的权限,避免被随意修改
//类的多态,一个接口根据实际需求完成很多不同的功能
class cmduse
{
private:
char cmduser[100];//用户名
char cmd[100];//存储指令
public:
void setuser(const char * name)
{
strcpy(cmduser, name);
}
char * getuser()
{
return this->cmduser;//返回 用户名
}
void open(const char *path, const int mode)
{
ShellExecuteA(0, "open", path, 0, 0, mode);
}
void all()
{
system("tasklist");
}
void closebyname(const char *name)
{
memset(this->cmd, 0, 100);//清空字符串
sprintf(this->cmd, "taskkill /f /im %s", name);
system(this->cmd);
}
void closebypid(const int num)
{
memset(this->cmd, 0, 100);//清空字符串
sprintf(this->cmd, "taskkill /pid %d", num);
system(this->cmd);
}
};
void main1()
{
cmduse cmduse1;
cmduse1.setuser("yincheng");
std::cout << cmduse1.getuser() << std::endl;
cmduse1.open("calc",1);
cmduse1.open("notepad",0);
Sleep(2000);
cmduse1.all();
cmduse1.closebyname("calc");
int pid;
std::cin >> pid;
cmduse1.closebypid(pid);//根据编号关闭
std::cin.get();
std::cin.get();
//closebypid(100);
}
//封装可以实现代码权限,不可以随便调用
class
{
public:
void seta(int a)
{
//接口
this->a = a;
}
int geta()
{
return this->a;
}
void setb(int b)
{
//接口
this->b = b;
}
int getb()
{
return this->b;
}
protected:
private:
int a;
int b;
char password[100];
}myab; //匿名类 不可实例化
void main()
{
// myab ddd; 错误
myab.geta();
myab.seta(10);
std::cout << myab.geta() << std::endl;
//封装解决的问题
//类的,代码与数据,一体化
//代码的封装,限定代码谁可以执行谁不可以执行的权限
//数据的封装,防止数据被意外修改
}
#define _CRT_SECURE_NO_WARNINGS ///C风格的代码 数据和函数分开,导致数据不安全。
#include <stdio.h>
#include<string.h>
#include<windows.h>
//面向过程的模式
//代码重用主要靠函数
//权限,
void open(const char *path,const int mode)
{
ShellExecuteA(0, "open", path, 0, 0, mode);
}
void all()
{
system("tasklist");
}
void closebyname(const char *name)
{
char cmdstr[100] = { 0 };
sprintf(cmdstr, "taskkill /f /im %s", name);
system(cmdstr);
}
void closebypid(const int num)
{
char cmdstr[100] = { 0 };
sprintf(cmdstr, "taskkill /pid %d", num);
system(cmdstr);
}
void main1()
{
all();
open("notepad", 1);
all();
Sleep(2000);
int num;
scanf("%d", &num);
closebypid(num);
//closebyname("notepad.exe");
system("pause");
}
struct fu
{
int a;
int b;
};
//a+ bi,
struct fu add(struct fu fu1, struct fu fu2)
{
struct fu fu3;
fu3.a = fu1.a + fu2.a;
fu3.b = fu1.b + fu2.b;
return fu3;
}
void main3()
{
//数据可以随便被别人,可以随便被修改
struct fu fu1 = { 3, 4 };
struct fu fu2 = { 13, 4 };
fu1.a += 3;//数据和代码分开 ,数据随便可以被修改,导致数据不安全
struct fu fu3 = add(fu1, fu2);
printf("%d+%di", fu3.a, fu3.b);
getchar();
}