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

 1 //  在程序中  常常需要对    变量进行初始化   在类中怎样 对 对象进行初始化呢?
 2 //  前面说过   类是一种抽象的类型,不占储存空间 , 显然无处容纳 数据  所以在 进行 声明类的时候
 3 //  就 赋初值  是不正确的
 4 //  如果 一个 [[[类中 所有的成员]]] 都是  公用的 则可以在  定义对象时  对数据成员 进行初始化 (  和 结构体的初始化 相似 )
 5 #include<iostream>
 6 using namespace std;
 7 class time              //  声明一个 time 类
 8 {
 9 public:        //  下面的是  公用函数
10     time();         //定义 构造函数  ,函数名 和  类型名相同
11     //{
12         //hour=0;     //  利用构造函数, 对对象 中的数据成员 赋初值           //   虽然出现了  私有函数 中的 内容  但是 只是赋值的话 还是安全的
13        // minute=0;
14       //  sec=0;
15     //}
16     void set_time();      // 成员函数 声明
17     void show_time();
18 private:
19     int hour;
20     int minute;
21     int sec;
22 };
23 time::time3
24 {
25     hour=0;
26     minute=0;
27     sec=0;
28 }
29 void time::set_time()   //  定义成员函数
30 {
31     cin>>hour;
32     cin>>minute;
33     cin>>sec;
34 }
35 void time::show_time()
36 {
37     cout<<hour<<":"<<minute<<":"<<sec<<endl;
38 }
39 int main()
40 {
41     time t1;
42     t1.set_time();
43     t1.show_time();
44     time t2;
45     t2.show_time();
46     return 0;
47 }
48 /*C++ 提供了构造函数 来处理 对戏那个的初始化  构造函数 是一种特殊的成员函数 ,与其他的成员函数 不同 ,不需要 用户来 调用他 而是在 建立对象时 自动执行
49 构造函数 的名字必须和类型名 相同 而且不能任意命名 . 它 不具有任何的类型  ,不返回 任何值
50 */
51
52
53 // 在 类中 我们定义了 构造函数  在 以后 建立 对象的时候 会 自动执行 构造函数
 1 #include<iostream>
 2 using namespace std;
 3 class box
 4 {
 5 public:
 6     box(int ,int ,int );        //声明 带参的构造函数
 7     int volume();         //声明计算体积的函数
 8 private:
 9     int height;
10     int width;
11     int  length;
12 };
13 box::box(int h,int w,int len)   // 类外 进行定义 带参的构造函数
14 {
15     height=h;
16     width=w;
17     length=len;
18 }
19 int box::volume()     //  计算体积
20 {
21     return (height*width*length);
22 }
23 int main()
24 {
25     box box1(12,25,30);
26     cout<<box1.volume()<<endl;
27     box box2(15,30,21);
28     cout<<box2.volume()<<endl;
29 }
时间: 2024-10-20 20:00:45

利用 构造函数 实现数据成员的 初始化的相关文章

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++类中对数据成员进行初始化和赋值的区别

在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(

构造函数调用构造函数进行数据成员初始化问题(极易出错)

先看下面代码: #include<iostream> using namespace std; class CLS { public: int m_i; CLS(int i):m_i(i) { cout<<"CLS():this="<<this<<endl; } CLS() { CLS(0); cout<<"CLS():this="<<this<<endl; } }; int mai

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

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

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

这是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

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++初始化数据成员

在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){} }; 这两种初始化成员数据方式有差别,用构造函数初始化成员数据其实就是用赋值来实现,用初始化成员

c++类 初始化const数据成员

对于const或引用类型的类成员,唯一的初始化方式是在构造函数中使用成员函数初始化列表.构造函数体中的赋值语句是无效的 正确 1 #include<iostream> 2 using namespace std; 3 class Cbox{ 4 const int a ; 5 int b ; 6 public: 7 int g ; 8 Cbox(int d,int e):a(d){b=e;cout<<"strat";} 9 ~Cbox(){cout<<