[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++类基本语法

时间: 2024-11-02 23:35:22

[C++]C++类基本语法的相关文章

Python3.2官方文档翻译-- 类定义语法和类对象

6.3 初识类 类引入一些新语法:三种新的对象类型和一些新的语义. 6.3.1 类定义语法 类定义的最简单形式如下: class ClassName: <statement-1> . . . <statement-N> 类定义和函数定义(def语句)一样,必须先执行然后才生效.(你当然可以把类定义放在if语句分支中或者嵌入在函数中) 在实际情况中,在类定义中的语句常常是方法的定义,但是其他语句也是允许的并且有时是很有用的---以后我们会讨论到这点.在类中的定义方法通常有一个参数列表

什么是静态内部(Static Inner)类,语法要注意什么?

4静态内部类(Static Inner Classes)(视频下载) (全部书籍) 马克-to-win:这里的内部类的static,意思是它可以不用实例化外部类,就自己单独被实例化,单独存在(有点像生活中的办公室和办公桌(独立于办公室,办公桌也可以存在)),静态方法不就不用实例化类,直接用吗?就实例化而言,静态内部类和外层类之间完全没有任何关系,相互独立.谁爱怎么样,就怎么样!谁想实例化谁就实例化, 不管对方的感受.当然要想让它们有关系,也可以,见下面例子中的tc.core=nc; 重要语法:马

【c++错误】类的语法错误 error c2533:constructors not allowed a return type(构造函数不允许返回一个类型)

今天编写类的程序的时候不小心把类后的分号忘写了,就出现上面的错误提示. 顺便复习下类的正确格式: class 类名 { public: //习惯上将公有类型放在前面,便于阅读 ……(外部接口) protected: …… (保护型成员) private: ……(私有成员) }; //这里的分号千万不能忘写,不然会出现错误error: 2533:constructors not allowed a return type

python 类高级语法 静态方法

通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法 class dog(object): def __init__(self,name): self.name = name @staticmetho

第七章-复用类-组合语法

课后习题:练习1:创建一个简单的类,在第二个类中,将引用定义为第一个类的对象.运用惰性初始化来实例化这个对象. 我的答案: 一,个人. 1 package com.learnJava.test; 2 3 /** 4 * @Author zhuchangli 5 * @Date 2019/9/14 6 **/ 7 8 // 灶具 9 class Cooker{ 10 private String pot; // 锅 11 private String gas; // 煤气 12 Cooker(){

第七章-复用类-继承语法-1

练习2: 从Detergent 中 继承产生一个新的类.覆盖scrub() 并添加一个名为sterilize() 的新的方法. 一:我的答案: 1 package com.learnJava.test; 2 3 /** 4 * @Author zhuchangli 5 * @Date 2019/9/14 6 **/ 7 class Cleanser{ 8 private String s = "Cleanser"; 9 public void append(String a) { s

第七章-复用类-继承语法-2初始化基类-带参构造器

书上代码示例: 1 package com.learnJava.test; 2 3 /** 4 * @Author zhuchangli 5 * @Date 2019/9/14 6 **/ 7 class Game{ 8 Game(int i){ 9 System.out.println("Game constructor"); 10 } 11 } 12 13 class BoardGame extends Game{ 14 BoardGame(int i){ 15 super(i);

【OC语法快览】五、设计类接口

Designing a Class Interface     设计类接口 The Objective-C syntax for creating a class is very simple. It typically comes in two parts. 创建类的语法是很简单的,通常包括两部分. The class interface is usually stored in the ClassName.h file, and defines instance variables and

.NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法

开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以,跟着本篇的步伐,继续来围观. /* 新语法索引 */ 1.自动属性 Auto-Implemented Properties 2.隐式类型 var 3.参数默认值 和 命名参数 4.对象初始化器 与 集合初始化器 { } 5.匿名类 & 匿名方法 6.扩展方法 7.系统内置委托 Func / Acti