C++之面向对象学习基础一

 1 : 类是抽象的,不占用内存空间, 而对象是具体的,占用内存空间的(内存空间的大小有数据成员决定)

2 :声明类类型和类与结构体的异同

    → 声明类

    class 类名

       {

         private:

             私有成员和方法

         public:

             公有成员和方法

       };

    →比较类和结构体

      在面向对象程序中结构体存在的理由:由于C++必须要兼容C

   不同点:在没有显示的说明结构体或者类的访问控制权限的情况下(private, public)

              结构体为公有的

              类为私有的 

       例如: struct Student{ int num}; 这个num 为公有外部可以访问

              class  Student{ int num}; 这个num 为私有外部无法访问

      其他情况都是想同的 ,如果是面向对象的编程建议使用class而摒弃结构体

3 : 对象的三种定义方式

     → 先声明类类型然后在定义对象(常用)

     → 在声明类类型的同时定义对象

     → 不出现类名直接定义对象

     例如:

         class Student(){int num};

      第一种

      class Student(){int num};

      Student s;

      第二种

      class Student(){int num} s;

      第三种

      class {int num}s;

4 : 类外定义成员函数(面向对象的初步体验)

       →作用域限定符:"::"

           作用是说明这个函数是属于哪个类的

           原型 : 返回值类型 类名 :: 方法名(参数列表)

                   比如: void Student::display();

           说明 : 如果一个函数没有满足以上的原型则会呗认为是全局函数

                   比如 :::display(), display()

       →面向对象中的做法是 : 在类的内部声明函数,在类的外部定义函数

5 : inline函数

     → c++中规定在类内部定义的函数默认都是inline的函数,在类外部定义的函数都不是inline的函数

除非你显示的说明是inline函数

     → inline函数的优点 :节省时间

     → inline函数的做法 :当调用一个inline函数的时候,将函数的代码段复制插入到函数调用口,而

如果没有声明为inline的函数则会使流程转去代码片段直到返回(具体可以参加inline函数,在此不赘述)

6 : 成员函数的存储方式

     如上图可以知道一个对象占用的大小实际上是只取决于数据成员所占的空间,而与成员函数无关!

     可以使用如下的小例子来测试

 

 
  class Time

     {

       public:

            int hour; 

            int min;

            int sec ;

            void set(){

             //代码段

            }     

     }


    在main方法中可以使用sizeof(Time);看到内存大小是12

7 : 对象成员的三种引用方式

    → .引用

       Student s ;  s.num ;

    → 指针引用

       Student s , *p; *p = &s ; p.num ; 

    → 对象的引用

       Student s , s2 ; s2 = s1 ; s2.num ;

8 : 类的封装性和信息隐藏  

1: 头文件(主要是声明类的:成员和函数的声明)

2: cpp文件 (头文件的实现主要是函数的实现)

3 :  主函数接口

如下

 

Code :

#include <string>

using namespace std; 

class Student

{

private :

          int num ;

          string name ;

          char sex ;

public :

         void display();

         void setValue();

};

#include<iostream>

#include "Student.h"

void Student::setValue()

{

         cin>>num>>name>>sex;

}

void Student::display()

{

   cout<<"num = " <<num <<" name ="<<name<<" sex ="<<sex<<endl;

 

}

#include <iostream>

#include "Student.h"

using namespace std ;

int main( void )

{

         Student s ;

         s.setValue();

         s.display();

         return 0;

} ;




 
 

 

   

      

     

         

    

     

 

      

       

          

           

 

 

    

  

p

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值