主要讲述C++的封装
// testHellloworld2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
//类
class man
{
private:
char name[100];
int age;
public:
void set_name(const char *s)
{
/**
strcpy_s(char * strDest,const char * strSrc)
strcpy_s把从src地址开始且含有'\0'结束符的字符串复制到以dest开始的地址空间,
返回值的类型为char* ;已知strcpy函数的原型是:char * strcpy_s(char * strDest,const char * strSrc); */
/**
strcmp(str1,str2)
设这两个字符串为str1,str2,
若str1==str2,则返回零;
若str1<str2,则返回负数;
若str1>str2,则返回正数。*/
/*
将s所指向的某一块内存中的后n个 字节的内容全部设置为ch指定的ASCII值,
第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作,
其返回值为s。
void *memset(void *s, int ch, size_t n);
函数解释:将s中当前位置后面的n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法
*/
memset(name, 0,sizeof(name));
if(strcmp(s,"tom") == 0)
return;
strcpy_s(name, s);
}
void set_age(int i)
{
age = i;
}
char *get_name()
{
return name;
}
int get_age()
{
return age;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
man m;
m.set_name("marry");
/* m.set_name("tom");
char *p =(char *)m.get_name();
strcpy_s(p, "tom");
*/
cout<< m.get_name() <<endl;
getchar();
return 0;
}
类分离:即:类的封装:
主函数类:
// testHellloworld2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include "man.h"
#include <string.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
man m;
m.set_name("marry");
cout<< m.get_name() <<endl;
getchar();
return 0;
}
man.h头文件:主要用于函数声明,man.cpp负责实例化,,类似java的接口与实现类的关系
man.h:
#pragma once
class man
{
private:
char name[100];
int age;
public:
man();
void set_name(const char *s);
void set_age(int i);
const char *get_name();
int get_age();
};
man.cpp
#include "stdafx.h"
#include "man.h"
#include <string.h>
man::man()
{
}
void man::set_name(const char *s)
{
strcpy_s(name,s);
}
void man::set_age(int i)
{
age = i;
}
const char *man::get_name()
{
return name;
}
int man::get_age()
{
return age;
}
程序运行结果:
关注公众号:工控技术之家,可留言提问相关问题,有需要可发送源代码