C++学习笔记——面向对象

来源:互联网 发布:c语言基础教程视频 编辑:程序博客网 时间:2024/05/07 03:39

一、类的声明

class Student //声明类类型   {private : //声明以下部分为私有的   int num;   char name[20];   char sex;public : //声明以下部分为公用的   void display( )   {      cout<<"num:"<<num<<endl;      cout<<"name:"<<name<<endl;      cout<<"sex:"<<sex<<endl;   }};Student stud1,stud2; //定义了两个Student类的对象

    private和public称为成员访问限定符(member access specifier)。除了private和public之外,还有一种成员访问限定符protected(受保护的),用protected声明的成员称为受保护的成员,它不能被类外访问(这点与私有成员类似),但可以被派生类的成员函数访问。如果在类的定义中既不指定private,也不指定public,则系统就默认为是私有的。

二、类和结构体类型的异同

    用struct声明的结构体类型实际上也就是类。用struct声明的类,如果对其成员不作private或public的声明,系统将其默认为public。

三、成员函数

1.在类外定义成员函数

class Student{public :   void display( ); //公用成员函数原型声明private :   int num;   string name;   char sex;   //以上3行是私有数据成员};void Student::display( )//在类外定义display类函数{   cout<<"num:"<<num<<endl;   cout<<"name:"<<name<<endl;   cout<<"sex:"<<sex<<endl;}Student stud1,stud2; //定义两个类对象


注:成员函数在类外定义时,必须在函数名前面加上类名,予以限定(qualifed),” :: “是作用域限定符(field qualifier)或称作用域运算符,用它声明函数是属于哪个类的。如果在作用域运算符“::”的前面没有类名,或者函数名前面既无类名又无作用域运算符“::”,则表示这个函数是是全局函数。

2.inline 成员函数
    (1)为了减少时间开销,如果在类体中定义的成员函数中不包括循环等控制结构,C++系统会自动将它们作为内置(inline)函数来处理。
    (2)如果成员函数不在类体内定义,而在类体外定义,系统并不把它默认为内置(inline )函数,调用这些成员函数的过程和调用一般函数的过程是相同的。如果想将这些成员函数指定为内置函数,应当用inline作显式声明。
    注:如果在类体外定义inline函数,则必须将类定义和成员函数的定义都放在同一个头文件中(或者写在同一个源文件中),否则编译时无法进行置换(将函数代码的拷贝嵌入到函数调用点)

三、成员函数存储方式

(1)一个对象所占的空间大小只取决于该对象中数据成员所占的空间,而与成员函数无关。
(2)C++专门设立了一个名为this的指针,用来指向不同的对象。

0 0