当前位置: 首页 > news >正文

[C++]C++类基本语法

本测试代码包括以下内容:

(1)如何使用构造函数;
(2)默认构造函数;
(3)对象间赋值;
(4)const使用语法;
(5)定义类常量: 一种方法是用enum,另一种方法是使用static。

#include <iostream>

using namespace std;

enum sexType
{
    MAN,
    WOMAN
};

class Human
{
    //the default is private
    private:
        string name;
        sexType sex;
        int age;


        //(5) 定义类常量: 一种方法是用enum,另一种方法是使用static
        enum{LEN=1};
        static const int LEN2 = 3;

    public:
       //如果类定义中没有提供任何构造函数,则编译器提供默认构造函数。但,如果类中定义了构造函数,那么编写者必须同时提供一个默认构造函数。
       //有两种方法提供默认构造函数:
       //(1) 定义一个没有参数的构造函数:Human();
       //(2) 为非默认构造函数的参数提供默认值: Human(string m_name="no name", int m_age=0, sexType m_sex=MAN);
       //两种定义方式只能二选一
       Human();
       Human(string m_name, int m_age, sexType m_sex);
       Human(int m_age);
       ~Human();

       //定义在类声明中的方法为内联方法。也可以使用inline关键字将函数定义在类声明外部。
       void show() const  //const加在函数名后面表示该函数不会修改该类的数据成员。
       {
           cout<<"This is "<<name<<", sex: "<<sex<<", "<<age<<" Years old."<<endl;
       }


};

Human::Human()
{
    cout<<"default construct function"<<endl;
}

Human::Human(string m_name, int m_age, sexType m_sex)
{
    cout<<"construct function: "<<m_name<<endl;
    name = m_name;
    age = m_age;
    sex = m_sex;
}

Human::Human(int m_age)
{
    age = m_age;
}

Human::~Human()
{
   cout<<"destroy function: "<<name<<endl;
}

int main()
{
    cout << "This is test code of C++ class: "<< endl;
    {
        //(1) use of construct function
        Human jack = Human("Jack", 30, MAN);  //显示调用
        Human jerry("Jerry", 26, MAN);        //隐式调用
        Human *pTom = new Human("Tom", 10, MAN); //New调用
        //当构造函数只有一个参数时,可以直接用赋值语句赋值。只有一个参数的构造函数将会被自动调用
        Human marry = 11; //赋值调用

        //(2) defaults construct function
        Human Lucy;

        //(3) 赋值对象
        Human James;
        James = Human("James", 28, MAN); //创建一个临时对象James,copy一份儿该对象赋值给James变量。紧接着该临时对象会被销毁。

        //(4) const
        const Human Thomas("Thomas", 29, MAN);
        Thomas.show();  //The show method must define with 'const'
    }
    return 0;
}

运行结果为:

转载于:https://www.cnblogs.com/Jerryli/p/3915358.html

相关文章:

  • 在打开vs解决方案时,怎样让所以打开的项目自动折叠
  • UnityGUI系统之InputField
  • 20060726: 最近的事情
  • 网页小工具集合
  • Windows 8 学习笔记(一)
  • noteexpress使用指南
  • C从控制台(stdin)输入带空格的字符串到字符数组中
  • Daily Scrum: 2012/11/12
  • Non-Rule Package常用表名
  • 通用技术01--Git运用
  • 数据分析01--pandas数据结构浅析
  • python编程01 -- 基础知识
  • 通用技术06--RabbitMQ
  • 通用技术05--Docker
  • 通用技术07--JWT授权
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • Consul Config 使用Git做版本控制的实现
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Flannel解读
  • Go 语言编译器的 //go: 详解
  • JavaScript 一些 DOM 的知识点
  • JavaScript创建对象的四种方式
  • MySQL QA
  • PHP 的 SAPI 是个什么东西
  • react-native 安卓真机环境搭建
  • Spring Cloud Feign的两种使用姿势
  • vue-router 实现分析
  • 包装类对象
  • 关于Flux,Vuex,Redux的思考
  • 猴子数据域名防封接口降低小说被封的风险
  • 回顾 Swift 多平台移植进度 #2
  • 阿里云重庆大学大数据训练营落地分享
  • 昨天1024程序员节,我故意写了个死循环~
  • ​第20课 在Android Native开发中加入新的C++类
  • #ifdef 的技巧用法
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (编译到47%失败)to be deleted
  • (二)springcloud实战之config配置中心
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)shell调试方法
  • (转)关于pipe()的详细解析
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .Net 代码性能 - (1)
  • .net的socket示例
  • @Autowired 与@Resource的区别
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [BZOJ3223]文艺平衡树
  • [CF]Codeforces Round #551 (Div. 2)
  • [CF703D]Mishka and Interesting sum/[BZOJ5476]位运算
  • [CQOI 2011]动态逆序对
  • [C和指针].(美)Kenneth.A.Reek(ED2000.COM)pdf
  • [docker]docker网络-直接路由模式