我是靠谱客的博主 拼搏过客,最近开发中收集的这篇文章主要介绍【C++编程】 - 类与对象目录类与对象class与struct的区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

  • 目录
  • 类与对象
    • 类的声明
      • 成员函数
      • 成员访问限定符
    • 对象的定义
    • 对象的存储模型
  • 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.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_。

最后

以上就是拼搏过客为你收集整理的【C++编程】 - 类与对象目录类与对象class与struct的区别的全部内容,希望文章能够帮你解决【C++编程】 - 类与对象目录类与对象class与struct的区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部