【C++编程】

来源:互联网 发布:php上传文件带进度条 编辑:程序博客网 时间:2024/06/06 13:25

目录

  • 目录
  • 类与对象
    • 类的声明
      • 成员函数
      • 成员访问限定符
    • 对象的定义
    • 对象的存储模型
  • class与struct的区别

类与对象

在C++中,类是对象的抽象,而对象是类的具体实例。简单说对象的类型就是类。
因为类是抽象的,所以不占用内存空间。而对象是具体的,系统会给对象分配存储空间。

类的声明

C++对类的声明的一般形式:

class 类名{public:    //公有的属性和成员函数;private:    //私有的属性和成员函数;protected:    //保护的属性和成员函数;};

成员函数

成员函数的实现有两种方法,第一种在类内实现,第二种在类外实现。但是考虑类的封装,建议最好将成员函数的实现在类外实现。这样写出来的类清晰明了,实现类的接口与实现细节分离。

class Test{    public:        int x_;        void setXYZ(int x, int y, int z);    //成员函数的声明        void display();                      //成员函数的声明    private:        int y_;    protected:        int z_;};

inline函数定义:在类内定义的成员函数,系统默认为内置函数,内置函数也可以显式声明,在类外实现。
inline函数作用:为了减少运行时间,典型的空间换时间例子。

成员访问限定符

1、public:类与外部的接口,外部函数可以访问公有属性和成员函数。
2、private:只允许本类中的函数访问,类外没有访问权限。
3、protected:与private相似,只允许本类中的函数访问,类外没有访问权限。差别在于继承和派生时对派生类的影响不同。

对象的定义

对象的定义有三种:

  • 先声明类类型,再定义对象
  • 在声明类的同时定义对象
  • 不出现类名,直接定义对象

如:class student stud1;

对象的存储模型

同一类的不同对象中的数据成员的值一般不同,但是不同对象的函数的代码是相同的。

this指针:指向本类对象的指针,它的值是当前被调用的成员函数所属对象的起始地址。
当你实现成员函数的时候,发现需要返回成员函数的地址,此时需要用到this指针。


class与struct的区别

/*****************************************************Copyright (C): 2017-2018  File name    : main.cppAuthor       : ZhengqijunDate         : 2017年02月28日 星期二 11时56分45秒Description  : 主函数Funcion List : main*****************************************************/#include <iostream>using namespace std;class people    //类{    int x_;};struct person   //结构体{    int y_;};int main(){    class people a;   //定义对象    struct person b;  //定义结构体变量    a.x_ = 1;    b.y_ = 2;    cout << a.x_ << endl;    cout << b.y_ << endl;    return 0;}

编译如下所示:

main.cpp: In functionint main()’:main.cpp:16:6: error: ‘int people::x_’ is private  int x_;      ^main.cpp:29:4: error: within this context  a.x_ = 1;    ^main.cpp:16:6: error: ‘int people::x_’ is private  int x_;      ^main.cpp:32:12: error: within this context  cout << a.x_ << endl;            ^

从编译结果可以看出,类的属性默认为私有的,外部不能访问,结构体的属性默认为公有的,外部可以访问。所以编译器报了不能访问x_,可以直接访问y_。

1 0