C++类基本语法实例分析_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;
}

程序运行结果为:

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c++

c语言基本语法、r语言基本语法、c语言基本语法归纳、汇编语言基本语法、易语言基本语法,以便于您获取更多的相关知识。

时间: 2024-07-31 08:08:44

C++类基本语法实例分析_C 语言的相关文章

C++空类及没有成员变量的类的大小实例分析_C 语言

众所周知的C++中空类的大小为1,但是除了空类之外的其他一些没有成员变量的类的大小,还是有相当一部分开发人员对此有很多不明之处的. 这里我们以如下代码为例: #include using namespace std; class a {}; class b{}; class c :public a{ virtual void fun() = 0; }; class d :public b, public c{}; int main() { cout << "sizeof(a)&quo

C语言的递归思想实例分析_C 语言

本文实例分析C语言的递归思想,分享给大家供大家参考之用.具体方法如下: 通俗点来说,递归就是自己调用自己. 递归的难点一是理解递归的执行调用过程,二是设置一个合理的递归结束条件. 下面来看一段摘自书中的简单程序: #include <STDIO.H> long fact(int n); long rfact(int n); int main(void) { int num; printf("This program calculates factorials.\n"); p

C++实现不能被继承的类实例分析_C 语言

本文实例展示了C++实现不能被继承的类的方法,对于C++初学者而言有一定的学习借鉴价值.具体实现方法如下: 方法一: #include <iostream> using namespace std; class A { public: static A* getInstance(); static void deleteInstance(A* pA); private: A() { cout << "construct A\n";} ~A() { cout &l

C++编译器无法捕捉到的8种错误实例分析_C 语言

本文实例分析了C++编译器无法捕捉到的8种错误,分享给大家供大家参考之用.有助于深入理解C++运行原理,具体分析如下: 众所周知,C++是一种复杂的编程语言,其中充满了各种微妙的陷阱.在C++中几乎有数不清的方式能把事情搞砸.幸运的是,如今的编译器已经足够智能化了,能够检测出相当多的这类编程陷阱并通过编译错误或编译警告来通知程序员.最终,如果处理得当的话,任何编译器能检查到的错误都不会是什么大问题,因为它们在编译时会被捕捉到,并在程序真正运行前得到解决.最坏的情况下,一个编译器能够捕获到的错误只

C++虚函数表实例分析_C 语言

多态是C++面向对象程序设计的一个重要特性.以前看到虚函数觉得很神奇,为什么就能实现多态了呢.最初的时候曾设想,要实现运行时多态,应该让对象的某个部分始终指向一个固定的地址,子类继承的时候,就修改这个地址的内容.这样,父类和子类都是到同一个固定地址去读取内容,在运行时就能表现不同行为. 在看了<深度探索c++对象模型>之后,发现思路是类似的.在对象中,有一个指针指向一张虚函数表,里面按照次序存放了每一个虚函数,当子类继承的时候,即到虚函数表的指定位置去修改函数地址.当我们通过父类指针来操作一个

C++线程同步实例分析_C 语言

本文实例分析了C++线程同步问题,分享给大家供大家参考.具体分析如下: 该实例设置全局变量g_bContinue,在主线程中设置全局变量g_bContinue,工作线程检测该全局变量,实现主线程控制工作线程的目的. 打印出的g_cnt1与g_cnt2的数值不同,是因为线程调试时时间片的切换. 具体代码如下: // countError.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <Windows.h> DWORD

C++回溯法实例分析_C 语言

本文实例讲述了C++的回溯法,分享给大家供大家参考之用.具体方法分析如下: 一般来说,回溯法是一种枚举状态空间中所有可能状态的系统方法,它是一个一般性的算法框架. 解向量a=(a1, a2, ..., an),其中每个元素ai取自一个有限序列集Si,这样的解向量可以表示一个排列,其中ai是排列中的第i个元素,也可以表示子集S,其中ai为真当且仅当全集中的第i个元素在S中:甚至可以表示游戏的行动序列或者图中的路径. 在回溯法的每一步,我们从一个给定的部分解a={a1, a2, ..., ak}开始

C++二进制翻转实例分析_C 语言

本文实例讲述了C++二进制翻转的方法,将常用的几种解决方法罗列出来供大家比较选择.具体如下: 首先来看看一个相对笨拙的算法: #include <iostream> using namespace std; void printBinary(unsigned char str, int size = 1) { int flag = 0x01; for (int i = 0; i < size; i++) { for (int i = 0; i < 8; i++) { if (str

C语言创建链表错误之通过指针参数申请动态内存实例分析_C 语言

本文实例讲述了C语言创建链表中经典错误的通过指针参数申请动态内存,分享给大家供大家参考之用.具体实例如下: #include <stdio.h> #include <stdlib.h>// 用malloc要包含这个头文件 typedef struct node { int data; struct node* next;// 这个地方注意结构体变量的定义规则 } Node; void createLinklist(Node* pHder, int length) { int i =