C++构造函数及成员变量

class MyClass
{
public:
    int m_age;
    float m_hight;

    MyClass()
    {

    }
    ~MyClass()
    {

    }

    MyClass(int age, float hight)
    {
        this.m_age = age;
        this.m_hight = hight;
    }

};

// 对于构造函数及成员变量的几点简单说明
// 1. 成员变数的内存排布顺序与定义顺序有关,即先写在前面
// 2. 带参数的构造函数可以写成如下形式:
// MyClass(int age, float hight):m_age(age), m_hight(hight){}
// 3. 构造函数间的调用必须在初始化列表中进行,形式如下:
// MyClass():MyClass(100, 1.85){}

原文地址:https://www.cnblogs.com/tzsh1007/p/10557435.html

时间: 2024-10-08 21:52:27

C++构造函数及成员变量的相关文章

C++中使用初始化列表比在构造函数中对成员变量赋值更高效

这是在面试中遇到的一个问题,没有答出来,后来上网上查了一些资料,终于弄明白了: 一.首先c++标准规定成员变量必须在调用构造函数前进行初始化(这一点很重要) 二.如果我们在构造函数中对成员变量进行初始化,那么在进入构造函数之前,编译器会调用该成员变量的默认构造函数对成员变量进行初始化,当进入构造函数后,我们对成员变量初始化又会调用复制构造函数,之前的编译器调用的默认构造函数等于浪费了,它做了无用功,降低了效率. 三.如果我们用参数列表的形式对成员变量进行初始化,就不会调用成员变量的默认构造函数了

关于Java的构造器和直接为成员变量赋值的区别

首先,看一下为什么要用构造器? 1.Java类的成员变量在被修饰为public.protected和包访问权限时,可以在不同层次上直接给成员变量赋值. 但是,赋值的前提是:必须存在持有成员变量的对象.而对象的初始化必须调用构造函数,所以构造函数是必不可缺的. 至于使用构造函数还是直接声明时给成员变量赋值,那就要看情况而定. 如果创建的这个对象是不可变的,那么就必须使用构造函数初始化成员变量,反之,就无所谓. 另外,直接给成员变量赋值,Java是不推荐的,因为这样会破坏它的封装性.所以,建议在构造

子父类中码静态代块 构造代码块. 代码块 构造函数 成员变量 实例变量 执行顺序

刚开始接触时,很不容易分清楚 创建子类或者多态的情况: /* 创建子类的情况: 1.父类静态代码块 2.子类静态代码块 3.父类构造块 /实例变量(new 创建的变量成员)//谁在前执行谁,执行完再执行构造函数 4.父类构造函数//父类构造函数有方法,如果方法子类有就执行子类的方法,没有才再执行父类方法.//如果子类有父类没有会报错!//父类私有该方法就执行父类的方法 5.子类构造块/实例变量//谁在前执行谁,执行完再执行构造函数 6.子类构造函数 7.子类普通方法//调用成员变量,看子类的值,

java中成员变量、代码块、构造函数运行顺序

1.java虚拟机执行程序,首先须要装载类,安装现装载父类,初始化父类的静态代码块和静态成员变量 再load子类. 初始化子类静态代码块和成员变量 2.load完成父类与子类后,从main函数入口运行程序.先输出,接着new实例化Beetle类,则先实例化父类Insect,实例化父类时.先初始化非静态成员变量和非静态代码块,接着运行父类构造方法 再实例化子类,实例化子类时,先初始化非静态成员变量和非静态代码块,接着运行子类构造方法. package it.xiangnan.test; publi

java中成员变量、代码块、构造函数执行顺序

1.java虚拟机运行程序,首先需要装载类,安装现装载父类,初始化父类的静态代码块和静态成员变量 再load子类.初始化子类静态代码块和成员变量 2.load完毕父类与子类后,从main函数入口执行程序,先输出,接着new实例化Beetle类,则先实例化父类Insect,实例化父类时,先初始化非静态成员变量和非静态代码块,接着执行父类构造方法 再实例化子类,实例化子类时,先初始化非静态成员变量和非静态代码块,接着执行子类构造方法. package it.xiangnan.test; public

C++构造函数对类成员变量初始化,使用初始化列表和构造函数内部直接赋值 的差别

初始化和赋值对内置类型的成员没有什么大的差别,像任一个构造函数都能够. 但有的时候必须用带有初始化列表的构造函数: (1) 成员类型是没有默认构造函数的类.若没有提供显式初始化时,则编译器隐式使用成员类型的默认构造函数,若类没有默认构造函数,则编译器尝试使用默认构造函数将会失败. (2) const成员或引用类型的成员.由于const对象或引用类型仅仅能初始化,不能对他们赋值. 另一个赋值次数,效率上的差别: 初始化參数列表在对象初始化时对成员变量赋值一次. 构造函数内直接赋值,对成员变量赋值两

Java--Reflect(反射)专题4——获取成员变量以及构造函数信息

转载请注明:http://blog.csdn.net/uniquewonderq 首先写一个获取成员变量的静态方法: 成员变量也是对象, 是java.lang.reflect.Field类的对象 Field类封装了关于成员变量的操作 getFields()获取的是所有的public的成员变量的信息 getDeclaredFields()获取的是该类自己声明的成员变量的信息,可能是私有的也可能是共有的 public static void printFieldMessage(Object obj)

java类中,成员变量赋值第一个进行,其次是静态构造函数,再次是构造函数

如题是结论,如果有人问你Java类的成员初始化顺序和初始化块知识就这样回答他.下面是代码: package com.test; public class TestClass{ // 成员变量赋值第一个执行 private static int m1=1; private int m2=1; // 静态构造函数第二个执行 static{ System.out.println("成员变量赋值先于静态构造函数 m1="+m1); m1=2; } // 构造函数第三个执行 public Tes

C#继承中构造函数,成员变量的执行顺序

public class Animal { static string baseClassName; protected string _skincolor; Instancevariable iv = new Instancevariable("父类实例成员变量"); static Instancevariable siv = new Instancevariable("父类静态成员变量"); static Animal() { baseClassName = &