类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。
class Circle
{
public://公有属性
char *m_name;
int m_length;
void print()
{
cout<<name<<length<<endl;
}
private://私有属性
protected://保护属性
};
类中包含三个属性:
共有属性:可以在类中调用,也可以在类外调用。
私有属性:只能类内调用。(在类内定义对象时,未声明属性的对象都默认为私有属性)
保护属性:只能类内调用。
在类的内部(定义类的代码内部),成员之间是可以互相访问的,没有访问权限的限制。
在类的外部(定义类的代码之外),只能通过对象访问成员,并且通过对象只能访问 public 属性的成员,不能访问 private、protected 属性的成员。
Circle
是类的名称;类名的首字母一般大写。
上面的例子中定义了两个公有属性的成员变量和一个公有属性的成员函数。
类是一个模板(Template),编译后不占用内存空间,所以在定义类时不能对成员变量进行初始化,因为没有地方存储数据。只有在创建对象以后才会给成员变量分配内存,这个时候就可以赋值了。
注意在类定义的最后有一个分号;
它是类定义的一部分,表示类定义结束了,不能省略。
在定义类的成员变量时,不要为变量进行初始化,因为类相当于一种数据结构,本身不占据内存空间,如果对变量进行初始化,就需要开辟内存空间来保存数据。
上例中成员变量写成了m_length的写法,以“m_”做开头,是一种约定俗成的写法。
成员函数可以在类外定义也可以在类内定义:在类内定义的函数,相当于内联函数,构建函数体,调用时直接 宏替换就可以完成操作,而在类外定义的函数则不会如此。
class Circle
{
public:
void print();
};
void Circle::print()
{
cout<<类外实现<<endl;
}
在类外实现函数时,应该用::
域解析符,指出定义的函数属于哪一个类。
我们在编程时,要养成类内定义函数,类外实现函数的习惯。
三、创建对象class Circle c1;
Circle c1;
以上两个定义方式都是正确的,定义时可以省略class
Circle
是类名,c1
是创建的对象名。
创建类的对象时,可以同时创建类的对象数组
Circle c1[10];
上例表示定义了十个Circle类型的对象数组。
创建对象以后,可以使用点号.
来访问成员变量和成员函数,这和通过结构体变量来访问它的成员类似
和结构体指针以及为结构体指针开辟内存空间一样,类也可以创建对象指针,以及开辟内存空间。
1、定义指针
Circle c1;
Circle *p1=&c1;
2、个类的对象指针分配内存
Circle *p1=new Circle;
delete p1;
类的对象指针指向类,指针可以指向类中的成员变量和成员函数。
a落幕呀 原创文章 19获赞 14访问量 488 关注 私信 展开阅读全文