类与对象的定义
类(class)是C++有别于C语言的最重要的概念之一,正是因为有了类的概念,C++才拥有了所谓面向对象(OOP,即Object Original Programming)的编程模式,那么类究竟是什么呢?
单从语法层面讲,类其实就是增加了函数的结构体。而从逻辑层面讲,类是增加了数据行为的结构体。类跟结构体一样,先要自定义类类型,然后再使用类类型去定义变量(对象)。以下是示例代码:
点击查看代码
// 自定义一个类类型:A
class A
{
public: // 成员限定符 【公有的 、公开的】
int x;
float y;
// 类方法
void showInfo()
{
cout << "x:" << x << endl;
cout << "y:" << y << endl;
}
};
注意:类中如没有特殊的说明他的成员访问会被限定为私有的(只允许在类内部访问数据),因此一般会使用public 来修饰。后期再对成员限定符进行详细学习,现阶段可以把所有的限定设置为public公有的。
点击查看代码
#include <iostream>
#include <cstring>
using std::cout;
using std::endl;
class Cat
{
public: // 把以下所有成员设置为公有的成员
// 设计用于描述猫这个种类的【属性】变量
int Num ;
char Name[32];
// 设计用于描述猫这个种类的【行为】函数
void Eat()
{
cout << Name << " : 正在吃鱼.." << endl;
}
void SetVal( int num , const char *name )
{
Num = num;
strcpy(Name, name);
}
void Show()
{
cout << "Num : " << Num << endl;
cout << "Name : " << Name << endl;
}
};
int main(int argc, char const *argv[]) 36
{
Cat Tom ; // 实例化一个对象 Tom
Tom.SetVal( 1 , "Tom" );
Tom.Eat();
Tom.Show();
return 0;
}
所谓类方法,就是类里面的函数接口,这是与结构体有重大区别的地方之一。类方法实际上表达的是一个对象的行为属性,比如小猫类 Kitty 应该要提供如下类方法,来表达一只小猫的正常的行为:

调用这些类方法的形式也非常简单,跟普通的函数调用没有什么区别,只不过类方法一般是通过类的对象来调用的(静态对象可以通过对象调用也可以通过类调用),例如:

类成员权限限定符:

点击查看代码
class A
{
int w; // 默认:私有成员
private: // 以下是私有成员
int x;
protected: // 以下是保护成员
int y;
public: // 以下是公有成员
int z;
void f()
{
// 类方法可以访问任何类成员
x = 100;
y = 200;
z = 300;
}
};
int main(void)
{
A a;
// 错误!私有和保护成员都不能通过对象访问
a.x = 100;
a.y = 200;
// 正确!公有成员可以通过对象访问
a.z = 300;
a.f();
}
一般而言,对于类成员的权限限定的基本原则是:

浙公网安备 33010602011771号