class-如何用构造函数来初始化????

问题描述

如何用构造函数来初始化????
 #include<iostream>using namespace std;class Date{private:    int year month day;public:    Date(int y int m int d)    {        year = y; month = m; day = d;    }};class Time{private:    int hour minute second;public:    Time(int hour1int minute1int second1)    {        hour = hour1; minute = minute1; second = second1;    }};class DateTime{private:    Date date; // 数据成员为Date类的对象    Time time; // 数据成员为Time类的对象public:    DateTime(int y int m int d) : date(y m d):time(ymd)    //这里错了怎么弄    {        cout << this << ""......"" << endl;    }};int main(){    DateTime dt(2014 3 24);    return 0;}

解决方案

DateTime(int y int m int d) : date(y m d):time(ymd)
第二个冒号改为逗号

解决方案二:
嗯嗯,改了,行了,谢谢

解决方案三:

#include<iostream>using namespace std;class Date{private:    int year month day;public:    Date(int y int m int d)    {        year = y; month = m; day = d;    }};class Time{private:    int hour minute second;public:    Time(int hour1 int minute1 int second1)    {        hour = hour1; minute = minute1; second = second1;    }};class DateTime{    //说明:    //  如果数据成员是类的对象的话,那么只能在定义时初始化,或者另外定义初始化函数来做。    //  最好的办法是将数据成员定义为类的对象的指针,那么直接可以用new来初始化。private:    Date *date; // 数据成员为Date类的对象    Time *time; // 数据成员为Time类的对象public:    DateTime(int y int m int d)     {        date = new Date(y m d);        time = new Time(0 0 0);        cout << this << ""......"" << endl;    }    ~DateTime()    {        delete date;        delete time;    }};int main(){    DateTime dt(2014 3 24);    return 0;}
时间: 2024-09-08 05:50:44

class-如何用构造函数来初始化????的相关文章

c++ 构造函数的初始化列表

构造函数的初始化列表仅仅指定用于初始化成员的值,并不指定这些初始化执行的次序.成员初始化的次序就是定义成员的次序,第一个成员首先被初始化,然后是第二个,依次类推   首先,运行下图中的C++代码,输出是什么? 复制代码 代码如下: class A { private:  int n1;  int n2; public:  A(): n2(0) , n1(n2 + 2)  {  }  void Print()  {   cout<<"n1:"<<n1<<

c++构造函数的初始化列表中初始化了一个类类型的成员,调用的是类类型的复制构造函数吧?

问题描述 c++构造函数的初始化列表中初始化了一个类类型的成员,调用的是类类型的复制构造函数吧? 如题:c++构造函数的初始化列表中初始化了一个类类型的成员,调用的是类类型的复制构造函数吧? 解决方案 什么?复制构造函数? 解决方案二: C++类构造函数列表初始化C++类构造函数初始化列表c++中什么类型的成员变量只能在构造函数的初始化列表中进行 解决方案三: 真是初始化列表,跟复制构造函数没关系,调用复制构造函数要看你是如何初始化的 解决方案四: 参数列表初始化成员是调用成员的构造函数,但是什

c++-C++类的私有成员中定义了一个数组,怎么在构造函数中初始化这个数组?

问题描述 C++类的私有成员中定义了一个数组,怎么在构造函数中初始化这个数组? 写了这样一个类: class Base{ private: int r[MAX_SIZE]; int length; public: Base() { r[MAX_SIZE] = {1,2,0,5,8,9,7,3,6,4}; //编译的时候在这边出错 length = 10; } void swap_data(int,int); void Show(const Base &ob); friend int Bubble

C++成员变量、构造函数的初始化顺序

一.C++成员变量初始化 1.普通的变量:一般不考虑啥效率的情况下 可以在构造函数中进行赋值.考虑一下效率的可以再构造函数的初始化列表中进行 2.static 静态变量(本地化数据和代码范围): static变量属于类所有,而不属于类的对象,因此不管类被实例化了多少个对象,该变量都只有一个.在这种性质上理解,有点类似于全局变量的唯一性. 函数体内static变量的作用范围时该函数体,不同于auto变量,该变量内存只被分配一次,因此其值在下次调用时维持上次的值. 在模块内的static全局变量可以

帮忙解惑,在构造函数中初始化为什么不好

问题描述 各位高手,我在看<Ajile Java Crafting Code With DDT>中的setup小节的时候看到了一句话,不是很理解,就请假各位,原文是这样"Even though you could create a constructor and supply common initialization code in it, doing so is considered bad practice. The preferred idiom for test initi

c++ 构造函数的初始化列表_C 语言

首先,运行下图中的C++代码,输出是什么? 复制代码 代码如下: class A{private: int n1; int n2;public: A(): n2(0) , n1(n2 + 2) { } void Print() {  cout<<"n1:"<<n1<<",n2:"<<n2<<endl; }};int main(void){ A a; a.Print(); return 0;} 答案:输出n1

基类构造函数和初始化器的执行顺序

标题比较抽象,所以我写了一个Demo来说明问题: public class A { public A() { Console.WriteLine("A的构造函数被调用"); } } public class B : A { private X x = new X(); //初始化器 } public class X { public X() { Console.WriteLine("X的构造函数调用"); } } static void Main(string[]

C#箴言:用静态构造函数初始化静态成员

函数|静态 编写程序的时候难免要使用到静态成员,由于静态成员的访问是脱离类型对象的,所以使用非静态构造函数,私有方法或者一些其他方法都是不合理的..Net提供了成员初始化语句和静态构造函数来初始化静态成员. 根据上一个单元,我们可以知道静态成员的初始化语句会早于静态构造函数执行,其次还知道成员初始化语句的好处和一些限制.这里要提的一点就是,静态构造函数和实例构造函数之间的区别,因为静态构造函数是由CLR调用执行的,所以静态构造函数只能是一个,同时不能还有参数.那么静态构造函数相对于成员初始化的一

构造函数初始化对象。。。

问题描述 构造函数初始化对象... 例如: public class A{ private B b; A(){ b = new B(); } } 1.这样做的好处 2.有什么场景会用到 解决方案 这是类的聚合嘛,比如说,一个LinkedList类(链表) 聚合一个叫做Header的Node类型(头节点),并且在构造函数中初始化它. 解决方案二: 处理数据 比如你想要的B数据是int的,但是获取到的却是string类型的数字,这时就用这个处理下 解决方案三: 一楼正解.类的组合使用方式,在构造函数