精华内容
下载资源
问答
  • 1、创建构造函数 2、定义构造函数 3、使用构造函数

    1、创建构造函数 

     

     

    2、定义构造函数

    3、使用构造函数

    展开全文
  • 解决“不存在默认构造函数问题”

    万次阅读 2018-03-16 23:44:06
    方法一:添加一个带参数的构造函数即可。 方法二:给带参的构造函数里面的参数赋上初值。 #include<iostream> #include<string> using namespace std; class Cat { private: string name; public: //...

    方法一:添加一个不带参数的构造函数即可。


          方法二:给带参的构造函数里面的参数赋上初值。
    #include<iostream>
    #include<string>
    using namespace std;
    class Cat
    {
    private:
    string name;
    public:


    //Cat() {}
    Cat(string name) :name(name)
    {


    }


    void setName(string name)
    {
    this->name = name;


    }
    string getName()
    {
    return name;
    }
    void play(Cat &cat)
    {
    cout << name << "与" << cat.name << "在一起快乐的玩耍" << endl;
    }


    };
    int main()
    {
    Cat c;
    Cat d("Kitty");
    c.setName("Tom");
    c.getName();
    c.play(d);
    return 0;
    }

    展开全文
  • 关于”‘customer’中不存在默认构造函数“的问题,我是之前在中声明定义了一个带参数的构造函数,如下: 但是报错如下:   解决方法:  添加一个带参数的构造函数即可。

             关于”类‘customer’中不存在默认构造函数“的问题,我是之前在类中声明定义了一个带参数的构造函数,如下:



    但是报错如下:

     

    解决方法:

            方法一:添加一个不带参数的构造函数即可。

          方法二:给带参的构造函数里面的参数赋上初值。

    展开全文
  • C++默认构造函数

    万次阅读 多人点赞 2018-02-08 12:43:51
    本文围绕3个问题来理解C++的默认构造函数: 什么是默认构造函数?...准确的说,默认构造函数就是在调用时需要显示地传入实参的构造函数。根据这个原则,下面2种构造函数都是默认构造函数: class S...

    本文围绕3个问题来理解C++的默认构造函数:

    1. 什么是默认构造函数?
    2. 默认构造函数什么时候被调用?
    3. 编译器在什么情况下会生成默认构造函数?

    一. 什么是默认构造函数?

    我们一般会认为默认构造函数就是编译器自动生成的那个构造函数,其实这种理解不全面。
    准确的说,默认构造函数就是在调用时不需要显示地传入实参的构造函数。根据这个原则,下面2种构造函数都是默认构造函数:

    class Sample {
    public:
        // 默认构造函数。
        Sample() {
            // do something
        }
    };
    class Sample {
    public:
        // 默认构造函数。虽然有形参,但有默认值,调用的时候可以不显示的传入实参。
        Sample(int m = 10) {
            // do something
        }
    };

    二. 默认构造函数什么时候被调用?

    如果定义一个对象时没有使用初始化式,编译器就会使用默认构造函数。如:

    Sample s;

    三. 编译器在什么情况下会生成默认构造函数?

    有一句很经典的话可以用来回答这个问题:惟有默认构造函数”被编译器需要“的时候,编译器才会生成默认构造函数。

    那我们只需知道什么时候“被编译器需要”,就可以知道什么情况下会生成默认构造函数了。下面几种情况下,编译需要生成默认构造函数:

    1. 当该类的类对象数据成员有默认构造函数时。
    2. 当该类的基类有默认构造函数时。
    3. 当该类的基类为虚基类时。
    4. 当该类有虚函数时。

    四. 注意事项

    4.1 避免“无参数的默认构造函数”和“带缺省参数的默认构造函数”同时存在

    无参数的默认构造函数带缺省参数的默认构造函数同时存在时,编译器会产生二义性,从而生成编译错误。

    class Sample {
    public:
        // 默认构造函数
        Sample() {
            // do something
            printf("Sample()");
        }
    
        // 默认构造函数
        Sample(int m = 10) {
            // do something
            printf("Sample(int m = 10)");
        }
    };
    
    
    int main()
    {
        Sample s; // error C2668: “Sample::Sample”: 对重载函数的调用不明确
    
        return 0;
    }

    4.2 使用无参构造函数创建对象时,不应在对象名后面加上括号

    使用无参构造函数创建对象时,不应在对象名后面加上括号,否则会产生编译警告“warning C4930: “Sample s(void)”: 未调用原型函数(是否是有意用变量定义的?)”。因为编译器误认为Sample s();语句时要声明返回值为Sample对象的函数s,而又没找到函数s的定义,所以产生了警告。

    class Sample {
    public:
        // 默认构造函数
        Sample() {
            // do something
            printf("Sample()");
        }
    };
    
    
    int main()
    {
        Sample s(); // warning C4930: “Sample s(void)”: 未调用原型函数(是否是有意用变量定义的?)
    
        return 0;
    }
    展开全文
  • 默认构造函数和合成默认构造函数

    千次阅读 2016-03-25 16:41:20
    当我们没有为中的对象提供初始值,此时就会执行默认初始化,会通过一个特殊的构造函数来控制默认初始化过程,这个函数叫做默认构造函数,这个函数并需要任何的实参,但是如果我们的没有显式地定义构造函数,...
  • C++的构造函数和默认构造函数详解

    万次阅读 多人点赞 2019-04-07 15:19:45
    今天学习c++时突然感觉自己对构造函数和默认构造函数的区别有些分清,于是查找了各大网站将资料汇总一下,供自己和其他朋友们参考。 构造函数是c++的在构造对象时调用的函数,此函数没有返回类型。 默认构造...
  • C++中默认构造函数和构造函数初始化列表

    千次阅读 多人点赞 2018-12-13 10:59:45
    (2)默认构造函数默认构造函数是在调用时需要显示地传入实参的构造函数。 一个如果自己没有定义构造函数,则会有一个无参且函数体也是空的默认构造函数。只要程序员定义了构造函数,编译器就不会再提供默认...
  • 如果没有显示的为声明构造函数,编译器将生成一个接受任何参数,也执行任何操作的默认构造函数。然而你可以创建自己的默认构造函数,它可以接受任何参数,但根据需要对对象进行设置。 编译器提供的构造函数...
  • 声明和定义构造函数 构造函数:专门用于构造新对象、将值赋给它们的数据成员。 由于Stock对象提供3个值,因此应为构造函数提供3个参数。 Stock(const string &co, long n = 0, double pr = 0.0) 第一个参数:...
  • C++ 默认构造函数

    千次阅读 2016-09-06 23:27:49
    学习《C++ primer》一书,第二次看到构造函数,默认构造函数,合成的默认构造函数时感觉还是太明白,通过研读书本和查阅高手博文,整理这篇博客,理清思路。正如书中所说构造函数时一个非常复杂的问题,这里只是...
  •   根据C++标准定义,如果程序已定义构造函数,默认情况下编译器就不再隐含生成默认构造函数。注意,这里的“构造函数”包括复制构造函数(因为复制构造函数也是构造函数的一种)。   此时该一共有2个构造函数...
  • 那些你知道的默认构造函数~~

    千次阅读 2014-05-13 21:25:26
    首先,本篇文章只讲 “默认构造函数”,即如你所知,默认构造函数带参数的构造函数。 编译器会在 适当的时候 为class合成一个默认构造函数 ~~ 先问以下两个问题: 编译器会为任何没有声明构造函数的class,...
  • 默认构造函数详解

    万次阅读 2018-05-10 11:20:26
    错误认识1:若程序员没有自己定义无参数的构造函数,那么编译器会自动生成默认...正确认识:默认的构造函数分为有用的和无用的,所谓无用的默认构造函数就是一个空函数、什么操作也做,而有用的默认构造函数是可以...
  • 默认构造函数和默认复制构造函数

    千次阅读 2011-09-14 21:18:57
    各种构造函数的区别  构造函数(包括拷贝构造函数)的基本功能:... 与用户自定义构造函数相比,默认构造函数有功能缺陷:只能分配空间,完成了初始化数据的任务(的数据成员都是基本类型数据类型时的默认拷贝构造函
  • 如果一个没有任何构造函数,那么编译器会生成一个默认构造函数 今天在看《深度探索C++对象模型》的第二章:“构造函数语意学”的时候发现之前听到的说法是错误的。 比如说如下代码: class A { public: int a;...
  • 当一个没有任何构造函数时,编译器将会合成一个默认构造函数。 那么编译器合成的默认构造函数是做什么用的呢?是初始化的成员变量吗? 事实上不是。编译器合成的默认构造函数只是满足编译器的需要,而不是按照...
  • class A { public: A() {} }; 定义一个A类型的对象: A a;...以上两种方式是等价的,第一种使得类型可以向内置类型一样简单的被使用,第二种显示调用... 这种方式一定调用的是默认构造函数 class A { public:
  • 每一个只有一个析构函数,但可以有多个构造函数(包含一个默认构造函数,一个拷贝构造函数,和其他普通构造函数)和多个赋值函数(包含一个拷贝赋值函数,其他的为普通赋值函数)。一般情况下,对于任意一个A,...
  • 什么是默认构造函数

    千次阅读 多人点赞 2017-05-29 01:04:40
    )将为定义一个合成的默认构造函数。 合成默认构造函数会初始化中所有的数据成员。 第一个误解来自于我学习C++的第一本书 《C++ Primer》,在书中392页:“只有当一个没有定义构造函数时,编译器才会自动生成...
  • *在子类,父类默认构造函数及带参构造函数的调用: 如下程序,在父类,子类中均存在两种构造函数,一种是无参的构造函数,用于给一些属性提供默认值,一种是直接初始化某些属性;在子类进行继承时,子类构造函数对...
  • 当父类没有定义默认构造函数,定义了了自定义的构造函数时,子类定义构造函数时需要使用父类定义的构造函数,否则编译报错。 父类:没有定义默认构造函数,而是定义了其余的构造函数 子类的构造函数在定义时...
  • 默认构造函数的构造操作

    千次阅读 2014-05-18 13:36:53
    以下四种情况,编译器将会合成(即由编译器负责)一个nontrivial默认构造函数。 1、成员对象带有默认构造函数 例如: #include using namespace std;... } // Foo含有默认构造函数 }; class Bar { pub
  • Java的构造函数与默认构造函数(深入版)

    千次阅读 多人点赞 2020-03-07 22:39:11
    前言 我们知道在创建对象的时候,一般会通过构造函数来进行初始化。...构造函数与默认构造函数 构造函数 构造函数,主要是用来在创建对象时初始化对象,一般会跟new运算符一起使用,给对象成员变量赋...
  • 问题:对c++初学者来说存在一个误区,如果没有定义任何构造函数,编译器会自动生成默认的构造函数。...情况1含有对象数据成员,该对象类型有默认构造函数 即:一个class含有对象数据成员,该对象类型...
  • 第一种是成员中有成员是对象,并且该成员的含有默认构造函数,那么C++编译器会帮你给这个也生成一个默认构造函数,用来调用其成员对象的构造函数,完成该成员的初始化构造。需要强调的是,如果这个成员的...
  • [C++11] 默认构造函数

    千次阅读 2015-08-18 09:53:10
    通过一个特殊的构造函数来控制默认初始化过程,这个函数就是默认构造函数默认构造函数无需任何实参。我们可以显示的定义默认构造函数也可以让编译器为我们生成默认构造函数默认构造函数以如下规则初始化累的...
  • 一个,如果没有任何的用户声明的的构造函数,... 1、默认构造函数何时被合成 如果一个没有任何的用户声明的构造函数,那么在当编译器需要的时候,编译器会为合成一个默认的构造函数,它只用于执行编译器所需要
  • 关于默认构造函数的一点总结

    千次阅读 2015-12-19 17:51:07
    我们定义一个简单的: class func { public: int a; int b; }; 1.假如我们写构造函数,那么: ...//编译器会误认为是一个函数的声明 ...//会调用系统生成的默认构造函数 func* obj4=new func; cout<<"
  • 2、的父类带有default constructor,在derived class中会合成一个默认构造函数,在默认构造函数中依次调用父类的默认构造函数。  说明:如果derived class同时还带有具有默认构造函数的member object,则在所有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 339,820
精华内容 135,928
关键字:

类不存在默认构造函数