使用参数初始化表来实现对数据成员的初始化

这是c++提供的一种机制,具体格式如下:

 1 class BOX
 2 {
 3 public:
 4 BOX(int h,int w ,int len);
 5 private:
 6 int height;
 7 int width;
 8 int length;
 9 };
10
11 使用参数初始化表初始化的方式:
12
13 BOX::BOX(int h ,int w ,int len):height(h), width(w), length(len){}
14
15 传统的方式是这样子写的:
16 BOX::BOX(int h ,int w ,int len)
17 {
18 height= h;
19 width= w;
20 length= len;
21 }

注意,使用参数列表初始化是不能初始化静态变量的:比如说下面的

class BOX
 2 {
 3 public:
 4 BOX(int h,int w ,int len);
 5 private:
 6 static int height;
 7 int width;
 8 int length;
 9 };因为静态成员与对象无关,属于整个类,构造函数是构造某个具体的对象
时间: 2024-10-21 15:25:08

使用参数初始化表来实现对数据成员的初始化的相关文章

c++类中对数据成员进行初始化和赋值的区别

在c++中定义一个类 ,对于构造函数 我们经常是这么写的: class test { public: test(int n_x , int n_y) { x = n_x; y = n_y; } private: int x , y; }; 这中写法虽然是合法的但比较草率 在构造函数 test(int n_x , int n_y)中 , 我们这样实际上不是对数据成员进行初始化 , 而是进行赋值. 正确的是初始化应该是这样的: class test { public: test() {} test(

利用 构造函数 实现数据成员的 初始化

1 // 在程序中 常常需要对 变量进行初始化 在类中怎样 对 对象进行初始化呢? 2 // 前面说过 类是一种抽象的类型,不占储存空间 , 显然无处容纳 数据 所以在 进行 声明类的时候 3 // 就 赋初值 是不正确的 4 // 如果 一个 [[[类中 所有的成员]]] 都是 公用的 则可以在 定义对象时 对数据成员 进行初始化 ( 和 结构体的初始化 相似 ) 5 #include<iostream> 6 using namespace std; 7 class time // 声明一个

C++中默认构造函数中数据成员的初始化

构造函数的任务是初始化数据成员的,在类中,如果没有显示定义任何构造函数,编译器将为我们创建一个构造函数,称为合成的默认构造函数,合成的默认构造函数使用与变量初始化相同的规则来初始化成员.即当类中的数据成员没有在构造函数中显示初始化,将执行默认初始化: 1.对于内置类型(如int,double,char,bool等)和复合类型(数组,指针),定义任何函数体之外的内置类型或复合类型变量将被初始化0,对于函数体内的内置类型的对象,若没有初始化,其值是未定义的. 2.具有类类型的成员通过运行各自的默认构

用构造函数实现数据成员的初始化

错误的做法: class Time {     hour=0;     minute=0;     sec=0; }//因为类是一种抽象类型,并不是一个实体,并且不占存储空间,显然无处容纳数据. 正确的做法: #include<iostream> using namespace std; class Time { public:     Time()     {         hour = 0;         minute = 0;         sec = 0;     }     v

C++:用成员初始化列表对数据成员初始化

1.在声明类时,对数据成员的初始化工作一般在构造函数中用赋值语句进行. 例如: class Complex{ private: double real; double imag; public: Complex(double r,double i) //声明构造函数原型 { ........... } }; Complex::Complex(double r,double i) //在构造函数中用赋值语句对数据成员赋初值 { real = r; imag = i; } 2.另一种初始化数据成员的

C++学习笔记17,构造函数体内初始化数据成员与构造函数初始化器的区别(一)

在构造体内初始化数据成员是最常见的方法. 例如: #include <iostream> using namespace std; class A { private: int i; string s; public: A(int ii,string ss){ //在构造函数体内初始化数据成员 i=ii; s=ss; cout<<"ctor:i="<<i<<",s="<<s<<endl; } /

构造函数的初始化表

1. 如果类存在继承关系,那么派生类中必须在初始化列表中调用基类的构造函数: class A {… A(int x); // A的构造函数 }; class B : public A {… B(int x, int y); // B的构造函数 }; B::B(int x, int y): A(x) // 在初始化表里调用A的构造函数 { … } 2. const数据成员必须在初始化列表中进行初始化.因为const常量是属于对象的常量,而不是整个类的常量,对于每个对象,常量的值是不同的,在初始化列

C++初始化数据成员

在C++初始化类的成员数据有两种方式1. 在构造函数中实现 2. 定义初始化成员列表来初始化成员数据 class point { private: int x,y; public: point(int m,int n) { x=m; y=n; } }; class point { private: int x,y; public: point(int m=0,int n=0):x(m),y(n){} }; 这两种初始化成员数据方式有差别,用构造函数初始化成员数据其实就是用赋值来实现,用初始化成员

1.类中数据成员的声明与初始化总结

在C++中,类的静态成员(static member)必须在类内声明,在类外初始化,像下面这样 class A   { private: static int count ; // 类内声明 }; int A::count = 0 ; // 类外初始化,不必再加static关键字 为什么?因为静态成员属于整个类,而不属于某个对象,如果在类内初始化,会导致每个对象都包含该静态成员,这是矛盾的. 什么东西能在类内初始化 能在类中初始化的成员只有一种,那就是静态常量成员. 这样不行 class A