C++中类是一个非常重要的概念,也是经常使用的一个东西,平时我们建立对类成员的属性(public、protected、private)并不注意,经常将所有成员都设为public属性的,按照面向对象的标准化思想,在C++建立类时,需要注意:
(1)封装:将功能封装成一个个独立的单元,减小耦合,避免牵一发而动全身,降低维护成本。
(2)类的成员变量都定义成private类型的,类的成员函数无特殊情况均定义成public属性的。
如果类外需要读取使用类的成员变量,则通过写一个public属性的获取成员变量的函数来实现访问,如果类外需要对类的成员变量进行赋值,则通过写一个public属性的赋值成员变量的函数来实现访问,而尽量不要直接将类成员声明成public类型的。
具体示例如下:
#include "stdafx.h"
#include "iostream"
using namespace std;
//定义用于读取下面类成员的结构体
struct MyClassMember
{
int myint;
double mydouble;
};
//定义类
class MyClass
{
private:
//private属性的类成员
int myint;
double mydouble;
public:
//public属性的过去类成员函数设设置给类成员赋值函数
void getMyClassMemberValue(MyClassMember* member);
void setMyClassMemberValue(MyClassMember* member);
void display();
//构造函数
MyClass();
};
//构造函数具体内容
MyClass::MyClass()
{
myint = 5;
mydouble = 5.6;
}
//成员函数内容,注意该函数的成员必须为指针,只有这样才能把东西传出去,必须是指针
void MyClass::getMyClassMemberValue(MyClassMember* member)
{
(*member).myint = myint;
(*member).mydouble = mydouble;
}
//成员函数内容,注意该函数的成员必须为指针,只有这样才能把东西传出去,必须是指针
void MyClass::setMyClassMemberValue(MyClassMember* member)
{
myint = (*member).myint;
mydouble = (*member).mydouble;
}
//成员函数内容,显示
void MyClass::display()
{
cout<<myint<<endl;
cout<<mydouble<<endl<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
//新建类及结构体
MyClass testmyclass;
MyClassMember testmember;
//结构体赋值
testmember.myint = 2;
testmember.mydouble = 3.14;
//调用类的public函数对类的private成员进行赋值,注意取址符
testmyclass.setMyClassMemberValue(&testmember);
//显示出来看一看
testmyclass.display();
//新建类,此时类private成员变量的值由构造函数确定
MyClass test;
//调用类的public函数获取类的private成员的值,注意取址符
test.getMyClassMemberValue(&testmember);
//显示出来看一看
cout<<testmember.myint<<endl;
cout<<testmember.mydouble<<endl<<endl;
system("pause");
return 0;
}