[c++基本语法]——构造函数初始化列表

c++构造函数初始化成员变量列表:

 1 #pragma once
 2 class Node
 3 {
 4 public:
 5     int data;        // 权值
 6     Node *parent;    // 父节点
 7     Node *left;        // 左子节点
 8     Node *right;    // 右子节点
 9 public:
10     // 该段代码是c++的基本语法中的“构造函数初始化成员变量列表”
11     Node(void):data(-1),parent(NULL),left(NULL),right(NULL)
12     {
13     };
14
15     // 以上代码相当于以下代码
16     Node(void)
17     {
18         data=-1;
19         parent=NULL;
20         left=NULL;
21         right=NULL;
22     };
23
24     ~Node(void);
25 };

[c++基本语法]——构造函数初始化列表,布布扣,bubuko.com

时间: 2024-12-25 07:45:49

[c++基本语法]——构造函数初始化列表的相关文章

C++构造函数初始化列表与赋值

C++中类的初始化操作一般有四个部分组成: 1.构造函数初始化列表 2.构造函数体内赋值 3.类外部初始化 4.类声明时直接赋值 对于内部数据类型(char,int,float...),构造函数初始化列表和构造函数体内赋值,基本上没多大区别,效率差异也不大,但两者不能共存: class Student { public: Student(char *name, int age): //A初始化列表 m_name(name), m_age(age) { } Student(char *name,

const成员或者引用成员必须使用构造函数初始化列表的方式

#include<iostream.h> class A { const int a; int b; }; void main() { A obja; }编译出现如下错误:error C2512: 'A' : no appropriate default constructor available;如果将const去掉就没错了! #include<iostream.h> class A { public: const int a; int b; A(int x):a(x){} };

构造函数初始化列表

构造函数初始化列表有时是必要的.虽然构造函数分为初始化和计算阶段,使用初始化构造函数列表效率要高一些,这是其一,而且有些情况下必须使用,下面是一例, 1 class Foo 2 { 3 public: 4 Foo(int x, int y): a(x), b(y) {} 5 6 private: 7 int a; 8 int b; 9 }; 10 11 class Bar 12 { 13 public: 14 Bar(): foo(10, 10) {} 15 private: 16 Foo fo

转:C++类构造函数初始化列表

构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class CExample { public:     int a;     float b;     //构造函数初始化列表     CExample(): a(0),b(8.8)     {}     //构造函数内部赋值     CExample()     {         a=0;         b=8.8;     } }; 上面的例子中两个构造函数的结果是一样

C++之类构造函数初始化列表

构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class Example { public: int a; float b; //构造函数初始化列表 CExample(): a(0),b(8.8) {} //构造函数内部赋值 CExample() { a=0; b=8.8; } }; 例子中两个构造函数的结果是一样的.上面的构造函数(使用初始化列表的构造函数)显式的初始化类的成员:而没使用初始化列表的构造函数是对类的成员赋值

C++类构造函数初始化列表

构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class CExample {public:    int a;    float b;    //构造函数初始化列表    CExample(): a(0),b(8.8)    {}    //构造函数内部赋值    CExample()    {        a=0;        b=8.8;    }}; 上面的例子中两个构造函数的结果是一样的.上面的构造函数(使用初

构造函数初始化列表和构造函数体内赋值

#include <iostream> using namespace std; class A{ public: A(int a,string str) { m_a = a; m_str = str; } //A(int a,string str):m_a(a),m_str(str){} void print() { cout << m_a << ' '<< m_str<< endl; } private: int m_a; string m_

C++类构造函数初始化列表(转)

构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: { public:     int a;     float b;     //构造函数初始化列表     CExample(): a(0),b(8.8)     {}     //构造函数内部赋值     CExample()     {         a=0;         b=8.8;     } }; 上面的例子中两个构造函数的结果是一样的.上面的构造函数(使用初始化

C++中构造函数初始化列表为什么会比构造函数中赋值要高效

Test { Test(test& t1) { this->t=t1; } private: test t; } 相信很多人跟我一样,非常困惑为什么Test构造时会先调用test的构造函数,再调用test类的赋值操作符.那是因为赋值操作符不能产生新的对象,Test构造时免不了要构造一个test对象.所以正常流程是 先构造t,然后再调用赋值操作符赋值t(this->t=t1). 如果写成 Test { Test(test& t1):t(t1) { } private: test