c++程序设计类和对象

设计类

  1. 此类型的合法值是什么?
  2. 此类型应该有什么样的函数和操作符
  3. 新类型的对象该如何被创建和销毁
  4. 如何进行对象的初始化和赋值
  5. 对象作为函数参数如何以值传递
  6. 谁将使用此类型的对象成员

语法形式

class 类名称

{
    public:
        公有成员,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。
    private:
        私有成员,只允许本类中的函数访问,而类外部的任何函数都不能访问,如果紧跟在类名称的后面声明私 
        有成员,则关键字private可以省略。
    protected:
        保护型成员,与private类似,其差别表现在继承与派生时对派生类的影响不同,
}

类的成员函数

  1. 在类中声明函数原型
  2. 可以在类外给出函数体实现,并在函数名前使用类名加以限定
  3. 也可以直接在类中给出函数体,形成内联成员函数
  4. 允许声明重载函数和带默认参数值的函数

构造函数

  1. 函数名与类名相同
  2. 不能定义返回值类型,也不能有return语句
  3. 可以有形式参数,也可以没有形式参数
  4. 可以是内联函数
  5. 可以重载
  6. 可以带默认参数值

在对象被创建时使用特定的值构造对象,将对象初始化为一个特定的初始状态。

默认构造函数

  1. 调用时可以不需要实参的构造函数。(参数表为空的构造函数;全部参数都有默认值得构造函数)
  2. =default   如果程序中已定义构造函数,默认情况下编译器不再隐含生成默认构造函数。如果此时依然希望编译器隐含生成默认构造函数,可以使用=default          
    Clock() =default; //指示编译器提供默认构造函数
    
       Clock(int newH, int newM, int newS);     //构造函数

    构造函数的实现

Clock::Clock(int newH, int newM, int newS):hour(newH), minute(newM), second(newS){}

委托构造函数

委托构造函数使用类的其他构造函数执行初始化过程

例如:

Clock(int newH, int newM, int newS):  hour(newH),minute(newM),  second(newS){

}

Clock(): Clock(0, 0, 0) { }

复制构造函数

  1. 复制构造函数是一种特殊的构造函数,其形参为本类的对象引用。作用是用一个已存在的对象去初始化同类型的新对象。
  2. class 类名
    {
        public:
            类名(形参);//构造函数
            类名(const 类名 &对象名);//复制构造函数
    };
    类名::类(const 类名 &对象名)//复制构造函数的实现
    {
        函数体
    }
    Point(const Point& p) =delete;  //指示编译器不生成默认复制构造函数
    
    Point::Point(const Point &p){
        x = p.x;
        y = p.y;
    }

    =delete   :指示编译器不生成默认复制构造函数Clock(const Clock& p)=delete;  

复制构造函数被调用的三种情况

  1. 定义 一个对象时,以本类另一个对象作为初始值,发生复制构造;
  2. 如果函数的形参是类的对象,调用函数时,将使用实参对象初始化形参对象,发生复制构造;
  3. 如果函数的返回值是类的对象,函数执行完后返回主调函数时,将使用return语句中的对象初始化一个零时无名对象,传递给主调函数

析构函数

~Clock();   不能有参数列表  Clock::~Clock(){}

结构体和联合体

struct 结构体名称{
            public:
                公有成员

           protected:

           private:

}
union  联合体名称         共用存储空间

{
            public:
                 公有成员

             protected:

             private:

}
特点

成员共用同一组内存单元
任何两个成员不会同时有效

枚举类

enum class 枚举类型名:底层类型{枚举值列表};

例:

enum class Type { General, Light, Medium, Heavy};

enum class Type: char { General, Light, Medium, Heavy};

enum class Category { General=1, Pistol, MachineGun, Cannon};

枚举类的优势

强作用域,其作用域限制在枚举类中。

             例:使用Type的枚举值General: Type::General

转换限制,枚举类对象不可以与整型隐式地互相转换。

可以指定底层类型

例:enum class Type: char { General, Light, Medium, Heavy};

#include<iostream>

using namespace std;

enum class Side{ Right, Left };

enum class Thing{ Wrong, Right };  //不冲突

int main()

{

Side s = Side::Right;

Thing w = Thing::Wrong;

cout << (s == w) << endl;  //编译错误,无法直接比较不同枚举类

return 0;

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值