`

C++ 初始化对象中的对象、引用、常量

阅读更多
钱能C++ P280~P283

#include <iostream.h>
#include <string.h>

class StudentID
{
public:
    StudentID(int id = 0)
    {
        value = id;
        cout << "StudentID 构造时 id " << value << endl;
    }

    ~StudentID()
    {
        cout << "StudentID 析构时 id " << value << endl;
    }

    int value;
};

class Student
{
public:
    Student(char *pName="noName", int ssID = 0)
    {
        cout << "Student 构造时 pName " << pName << endl;
        strcpy(name,pName);
        name[sizeof(name) - 1] = '\0'; 
        StudentID id(ssID);     
    }

    ~Student()
    {
        cout << "Student 析构" << endl;
    }

    char name[20];      
    StudentID id;       //  从输出可以看出,StudentID初始化了两次
                        //  首先初始化这里,再到构造方法
};


int main()
{
    Student s("Tom",1988);
    return 0;
}


StudentID 构造时 id 0
Student 构造时 pName Tom
StudentID 构造时 id 1988
StudentID 析构时 id 1988
Student 析构
StudentID 析构时 id 0
分享到:
评论

相关推荐

    C++全局变量初始化的一点总结

    C++中的全局变量初始化是一个重要的话题,涉及到程序的正确性和可预测性。全局变量,即具有静态存储期的变量,其生命周期始于程序开始,终于程序结束。本文将深入探讨全局变量初始化的时机、方式以及一些处理特殊...

    c++常量引用.zip

    2. **初始化**: 普通引用必须在声明时初始化,而常量引用也必须在声明时初始化,且只能绑定到常量或已初始化的非临时对象上。 3. **引用解引用后的类型**: 对于常量引用,解引用后得到的是常量类型,对于普通引用,...

    C++中成员初始化列表的使用

    在C++中,当定义一个类时,可能会包含多种类型的成员变量,如基本数据类型、对象指针、常量或引用等。构造函数是创建对象并初始化这些成员变量的关键方法之一。成员初始化可以通过两种方式实现: 1. **构造函数体内...

    C++类成员和数据成员初始化总结

    在C++编程中,类成员和数据成员的初始化是一个至关重要的概念,因为它直接影响到对象的创建和使用。这里我们将深入探讨这些知识点。 首先,当创建一个C++类的对象时,对象的构造过程遵循一定的顺序。这包括两步:1)...

    C++常量详解一(常量指针与常量引用的初始化)

    - 常量引用(const int &r)不能绑定到临时对象或未初始化的变量,但可以绑定到已存在的常量或非常量对象,只要不改变其值即可。 - 常量引用不能被赋值,所以不存在int &r1 = r这样的操作。 总结来说,常量指针和...

    c++常量引用-基础学习

    引用必须在声明时就初始化,而且一旦初始化后,它总是指向同一个对象。这样做的好处是能够确保引用始终指向有效的内存位置,避免了空指针的问题。 常量引用,顾名思义,是引用的一种特殊形式,它不仅限制了引用本身...

    c++编程思想 内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数

    全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、动态对象创建、继承和组合、多态和虚...

    C++关于构造函数的初始化

    这种方式特别适用于初始化常量成员、引用成员或对象成员,因为这些类型的成员必须在构造期间立即初始化且不可更改。例如: ```cpp class Student { public: Student(int i, int j) : a(i), b(j) {} private: ...

    c++面向对象程序设计语言重点难点复习题及答案.doc

    对类的常量成员、引用成员和一般数据成员的初始化通常在构造函数的初始化列表中完成(题目7,8,9)。 5. 内存区域: - **全局数据区**:存储全局变量和静态变量。 - **堆区**:动态分配的内存,如new操作符分配...

    c++面向对象程序设计第三版谭浩强教学大纲.pdf

    * 数组的初始化 * 数组应用举例 * 字符串(字符串变量的定义与使用、字符串变量的输入输出、字符串运算、字符串数组) * 字符数组 第六章 善于使用指针与引用 * 指针变量(内存单元地址、指针变量的定义) * 指针...

    关于C++类的成员初始化列表的相关问题

    2. 初始化常量成员(const members):常量成员变量需要在构造函数中初始化,因为之后不能更改其值。使用初始化列表可以确保它们在创建对象时即被正确赋值。 3. 调用基类构造函数:当派生类构造函数需要调用基类的...

    C++和Java初始化顺序的比较代码

    1. 基本类型的静态字段和引用类型的静态字段(如果它们是常量,即final且已初始化):这些字段在类加载时按声明顺序初始化。 2. 静态初始化块:当类第一次被加载时执行,按块的顺序执行。 3. 实例字段:在构造器内部...

    程序设计中基于构造函数的对象初始化方法研究.zip_C++_suddenh4l

    在C++编程语言中,对象初始化是一个至关重要的过程,它涉及到类的实例化以及成员变量的赋初值。本文将深入探讨基于构造函数的对象初始化方法,以帮助开发者更好地理解和运用这一核心概念。 构造函数是C++中一种特殊...

    C_C++指针常量和常量指针详解

    ### C_C++中的指针常量与常量指针详解 #### 一、定义与基本概念 在C/C++编程语言中,指针是一个非常重要的概念,它允许程序员直接访问和操作内存地址。而在指针的基础上,衍生出了两种特殊的指针类型——**指针...

    c++面向对象程序设计课后习题答案

    - 构造函数和析构函数:用于对象的初始化和清理。 - 成员函数和友元函数:成员函数操作类的成员,友元函数可以访问类的私有和保护成员。 - 静态成员和常量成员:静态成员属于类,而非对象;常量成员则在对象生命周期...

    C++面向对象程序设计_C++_C++面向对象_ppt_

    - **构造函数**:当创建一个对象时自动调用,用于初始化对象的成员变量。 - **析构函数**:对象生命周期结束时自动调用,用于清理资源或执行必要的清理操作。 3. **访问修饰符**: - **public**:允许任何代码...

    EnumTest-初始化类的类成员对象(初始化列表方式).zip

    总结,`EnumTest-初始化类的类成员对象(初始化列表方式)`这个主题强调了如何在C++中使用初始化列表来初始化类的枚举成员和其他类成员对象,这是编写高效且易于理解的代码的关键实践之一。正确使用初始化列表可以...

    C++ 初始化列表详解及实例代码

    C++ 初始化列表是C++编程中一个非常重要的概念,它允许我们在创建对象时直接指定成员变量的初始值。初始化列表以冒号开头,后跟一系列以逗号分隔的成员变量及其对应的初始值,形式如下: ```cpp struct foo { ...

Global site tag (gtag.js) - Google Analytics