C++类和对象的基础概念
基础概念
1.类是自定义数据类型,是C语言的结构体的进化
2.对象是类实例化出来的,用数据类型定义一个变量
3.类内的变量称为成员变量(成员属性);类内函数称为成员函数(成员方法)
class M//定义了个类
{
public: //公共权限
int a;//成员变量或成员属性
void fun()//成员函数或成员方法
{
cout << "fun()" << endl;
}
};
int main()
{
M m;//m是一个对象 实例化
return 0;
}
类的封装
封装是把变量和函数放到类内。然后给这些数据赋予权限
封装的好处
1.防止乱调用函数和变量,导致报错
2.维护代码比较方便
class Test
{
public:
void Set(int x)
{
a = x;
}
void print()
{
cout << "a = " << a << endl;
}
int a;
}
int main()
{
Test t;
t.Set(10);//调用类内Set()函数给a赋值
t.print;//调用print()函数打印a的值
return 0;
}
访问权限
1.在类的内部(类作用域范围内),没有访问权限之分,所有成员可以相互访问。
2.在类的外部(类作用域范围外),访问权限有意义,访问权限分为public(公共权限),private(私有权限),protected(保护权限)。
3.在类外部,只有public(公共权限)修饰的成员才可以访问,在没有涉及继承与派生时,private(私有权限)和protected(保护权限)是同等级的,外部都不允许访问。
访问属性 | 属性 | 对象内部 | 对象外部 |
---|---|---|---|
public | 公共 | 可以访问 | 可以访问 |
protected | 保护 | 可以访问 | 不可访问 |
private | 私有 | 可以访问 | 不可访问 |
class People
{
//人的属性
public:
int tell;//身高变量 设置共有可以让外人知道
//人的行为
public:
void printTell()
{
cout << "我个子高" << endl;
}
protected:
int money;//钱设置保护,只有孩子们知道
private:
int girlFriend_Num;//女朋友个数只有自己知道
};
int main()
{
People p;
p.tell = 185;//可以访问身高
//p.money 保护权限的成员外部无法访问
//p.girlFriend_Num 私有权限的成员外部无法访问
p.printTell();//可以访问公共的成员方法
return 0;
}
类和结构体的区别
class A
{
int m;
};
struct B
{
int n;
};
int main()
{
A a;
B b;
//a.m;//出现错误无法访问
b.n;//可以正常访问
return 0;
}
class默认的权限是privare(私有权限);struct默认权限为public(共有权限)
尽量将成员成员变量设置为私有权限
1.将类内成员变量设置为私有权限,可以赋予访问数据的一致性,将函数设置为public权限,用类内函数访问类内成员,用户在访问类内成员的时候就只会访问函数不需要考虑是否加"()"。
2.使用成员函数可使对变量控制更精细,如果将所有成员变量设置为public权限,每个人都可以操作这个变量。如果设置为private权限,可以实现“不准访问”、“只读访问”、“读写访问”、“只写访问”
class Acc
{
public:
//对只读属性进行只读访问
int getOnlyRead()
{
return onlyRead;
}
//对只写属性进行只写访问
void setonlyWrite(int v)
{
onlyWrite = v;
}
//对读写属性进行读写访问
void getReadWrite(int v)
{
readWrite = v;
}
int setReadWrite()
{
return readWrite;
}
private:
int onlyRead;//只读访问
int onlyWrite;//只写访问
int readWrite;//读写访问
int noAccess;//外部不能访问
};