【C++编程】 - 类与对象

目录

类与对象

在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.cpp
Author       : Zhengqijun
Date         : 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_。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值