精华内容
下载资源
问答
  • 1. 什么是默认构造函数 首先默认构造函数的目的,如果程序员没有显式地为一个类定义某个特殊成员函数而又需要用到该特殊成员函数时,则编译器会隐式的为这个类生成一个默认的特殊成员函数。 我们一般会认为默认...

    1. 什么是默认构造函数

    首先默认构造函数的目的是,如果程序员没有显式地为一个类定义某个特殊成员函数而又需要用到该特殊成员函数时,则编译器会隐式的为这个类生成一个默认的特殊成员函数。

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

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

     

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

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

    派生类和基类的关系:

    我们通常说的派生类和基类,我们调用派生类的自定义的构造函数的时候,派生类会自动调用基类中的default construct函数,而不能调用基类中的其他构造函数(除非在派生类的构造函数序列初始化的时候指明基类的构造函数,否则将会自动调用基类默认构造函数)

    //不能通过,因为bar派生类不能调用基类中的defalut函数,因为不存在
    class Foo 
    { 
      private: 
      int val; 
      Foo(int i):val(i){}
    }; 
    class Bar:public Foo 
    { 
    public: 
      char *str; 
      int i; 
      Bar(int i,char*s){
          i=i;
          str=s;
      }
    }; 
    // 要想通过编译,除非在基类显示增加默认构造函数或者在派生类中构造函数序列初始化的时候显示指明调用基类自定义的构造函数
    
    // 增加默认构造函数
    class Foo 
    { 
      Foo(){};
      private: 
      int val; 
      Foo(int i):val(i){}
    }; 
    class Bar:public Foo 
    { 
    public: 
      char *str; 
      int i; 
      Bar(int i,char*s){
          i=i;
          str=s;
      }
    }; 
    
    // 或者在派生类构造函数显示调用基类自定义构造函数
    class Foo 
    { 
      private: 
      int val; 
      Foo(int i):val(i){}
    }; 
    class Bar:public Foo 
    { 
    public: 
      char *str; 
      int i; 
      Bar(int i,char*s):Foo(10){
          i=i;
          str=s;
      }
    }; 

    3. default默认构造函数的作用

    在C++中约定如果一个类中自定义了带参数的构造函数,那么编译器就不会再自动生成默认构造函数,也就是说该类将不能默认创建对象,只能携带参数进行创建一个对象;

    但有时候需要创建一个默认的对象但是类中编译器又没有自动生成一个默认构造函数,那么为了让编译器生成这个默认构造函数就需要default这个属性。

    先看例子:

    class A
    {
    public:
    A() = default;
    
    A(int B) {
    b = B;
    };
    
    private:
    int b;
    };
    
    // 定义一个默认的对象
    A a;
    //如果没有A() = default; 那么就会报错,或者需要你手动实现一个A() { b =0;},所以我认为default只是为实现提供了方便;
    
    至于系统的实现和我们自己的实现是否完全一致,这个不好确定,感觉也没有必要确定。

    编译器生成一个合成版本的构造/析构函数(包括拷贝构造,赋值构造,移动构造,移动赋值构造)
    关于构造函数:
    如果用户没有定义,在需要的时候编译器会生成一个默认的构造函数,这个规则你应当是知道的。
    但是,假如用户定义了其他构造函数(比如有参数的,或者参数不同的),那么编译器无论如何就不会再合成默认的构造函数了
    那么如果要使用无参数版本,用户必须显示的定义一个无参版本的构造函数。

    如果使用default指示的办法,那么可以产出比用户定义的无参构造函数有更优的代码(毕竟是编译器干活)
    还有一个作用可以让使用者一眼就看出这是一个合成版本的构造函数(相当于知道类的作者没干其他事情)

    总结:

    无论是显式的默认构造函数(=default),还是隐式合成的默认构造函数(编译器生成),都是用来控制默认初始化过程的。它按照如下规则初始化类的数据成员:
    1.如果存在类内的初始值,用它来初始化成员。
    2.如果不存在类内的初始值,默认初始化该成员。
     

    展开全文
  • 这也此博客为什么最近这么重视的,哈哈!言归正传!在Winform自定义控件过程中,经常会碰到给控件提供默认值,往往通过DefaultValue来提供默认值,但有时候却实现不了默认值的设置!  DefaultValue属性可以让...

            刚加完班,在公司过夜咯,但总是有一个问题围绕着我,非要做个记录才行,呵呵,本人有点笨,做个备忘总是好的嘛!这也是此博客为什么最近这么重视的,哈哈!言归正传!在Winform自定义控件过程中,经常会碰到给控件提供默认值,往往通过DefaultValue来提供默认值,但有时候却实现不了默认值的设置!

           DefaultValue属性可以让我们的公开属性在设计时、运行时等提供默认值,这个默认值可以让我们在没有额外提供一个值的时候,程序就可以使用默认值了,如下:

           private int  _myproperty;

           [DefaultValue(100)]

           public int myProperty

           {

                   set

                   {

                          _myproperty=value;

                   }        

                  get

                   {

                         return _myproperty;

                   }

           }

            进行过自定义控件开发的人都知道,如上代码应该是有效的!达到属性定义的目的,且能够提供默认值,这个默认值在设计时、运行时均有效,但是,有些特殊的数据类型或开发方式,往往让DefaultValue失效,如要为背景色提供一种默认值,怎么办?如下:

            [DefaultValue(typeof(Color),"Black")]

            public override Color BackColor

            {

                  get

                  {

                       return base.BackColor;

                  }

                 set

                 {

                      base.BackColor=value;

                 }

            }

           兴奋及了,我们可以实现背景的默认值设置了,但,兴奋过头了,默认值设置失效了!

           分析情况为:我们的默认值数据类型复杂(其为Color类型)、属性的定义方式复杂(其为重写方式)等,由此,失效的原因会不会是.net引擎的bug?其实不然,早在.net1.1版本出现的时候,这种情况的出现,MS已经提出,并有意要让工程师解决,由此,这个并不时.net引擎的bug!

           记得几年前见过一篇英文文章特意为DefaultValue设置默认值提供了解决方案,但是,由于时间关系,我就不找这篇文章并翻译了,我的英文也很菜,哈哈!

           我这里提供一种很多人都懂的方式(非如上英文解决方案的)吧,我们在定义自定义控件时,如果要为属性提供默认值,即我们在其构造函数或初始化函数中进行设置就可以了:

           1,构造函数中实现默认值(如实现如上背景默认值):

                  public partial class MyUserControl: UserControl
                  {
                         public MyUserControl()
                         {
                
                               InitializeComponent();
                               base.BackColor = System.Drawing.Color.Black;//重写BackColor的目的是为了为其提供默认值,但,多语言转换中会让重写的“Black”转换失效
                         }

                   }

           2,自定义控件初始化函数实现默认值(如实现如上背景默认值):

                  或把base.BackColor这行代码放到InitializeComponent()中。

           3,等等!



            由于这段时间,团队中有几个新同事均问过这个问题,由此今晚就做个备忘了,说错了望指教!-_-!

            晚安!梦周公去了!

    展开全文
  • java中default能否修饰类的方法和属性

    千次阅读 2018-03-07 16:56:20
    从上图可以看到,是不能的,myEclipse 编辑器已经报错了原因是什么呢,不能,没有这种写法的,修饰符在不写的时候有默认值,但是default不是修饰符.在switch语句里面有default, 但是也不是修饰符....


    从上图可以看到,是不能的,myEclipse 编辑器已经报错了

    原因是什么呢,

    不能,没有这种写法的,修饰符在不写的时候有默认值,但是default不是修饰符.在switch语句里面有default,
    
    
    但是也不是修饰符.
    展开全文
  • vue2中的prop设置default什么用?

    千次阅读 2018-08-01 13:13:28
    已经解决:原以为default是传入的值不符合类型要求,之后默认的值。原来是没有任何值的时候默认的值 保证你需要用到该属性的时候不会为undefined 默认值啊,因为你传了num和num2到两个prop中,所以默认值被覆盖了 ...

    这里写图片描述
    不明白为啥prop里面还写个default
    百度了下,恍然大悟
    代码如上《感觉default没什么用啊,也没什么提示和效果。
    已经解决:原以为default是传入的值不符合类型要求,之后默认的值。原来是没有任何值的时候默认的值

    保证你需要用到该属性的时候不会为undefined

    默认值啊,因为你传了num和num2到两个prop中,所以默认值被覆盖了

    已经解决:原以为default是传入的值不符合类型要求,之后默认的值。原来是没有任何值的时候默认的值

    感谢分享

    http://www.caotama.com/103234.html

    展开全文
  • 1.Java中四个修饰权限关键字是什么? Java中使用public、protecte、default、private关键字进行权限修饰。 2.分别的使用范围是什么? public 公开权限,能修饰类,变量,方法。它修饰的变量,方法既可以在同一...
  • 不明白为啥prop里面还写个default 百度了下,恍然大悟 ...已经解决:原以为default是传入的值不符合类型要求,之后默认的值。原来是没有任何值的时候默认的值 保证你需要用到该属性的时候不会为undef...
  • <p>I have a form at <a href="http://example.com/register/" rel="nofollow">http://example.com/register/</a> . I want this form to be processed by the current page. How would that be done? Is it <code>action="../register/default.php"</code> ?</p>... </div>
  • 一、state 可以看作 data 数据 存储状态(数据源),通过 this.$store.state....export default{ num: 0, msg: "温情", age: 22 } import {mapState} from 'vuex' let mapStateData = mapState(['num', 'msg', 'age
  • public final static Integer CODE_DEFAULT = 0; public final static String MESSAGE_SUCCESS = "操作成功"; public final static String MESSAGE_FAILURE = "操作失败"; private int code; private ...
  • pointer_default属性只在发生跨进程或跨机器通讯时起作用,这时组件的客户与组件不在同一个地址空间。客户调用组件方法的指针参数时,不能只传指针的值,还要把指针所指向的内容一起传到组件端。如果组件修改了指针...
  • default(默认) PlatfromTransactionManager默认的隔离级别 使用数据库默认的事务隔离级别, 除了default 其它几个Spring事务隔离级别与JDBC事务隔离级别相对应 read_uncommited(读未提交) 一个事务可以读取另外一个...
  • spring的xml配置关于自动配置的属性有四个default-autowire-candidates、...default-autowire-candidates和autowire-candidate作用与注入者,default-autowire和autowire作用于被注入者,什么是注入者,什么...
  • el-tree中default-expanded-keys属性中放入的数组如果改变了,它不会根据这个数组的改变而改变。而是把每个数组中的key都添加进去。...那有什么办法设置展开的节点吗,不用default-expanded-keys属性
  • qml的property(属性)有一些特殊的,如必要属性(Required Properties)、只读属性(Read-Only Properties)、默认属性Default Properties)、分组属性(Grouped Properties)、属性别名(Property Aliases)、...
  • js动态属性

    2021-05-17 11:58:36
    这个值之后,可以对这个值做什么,则大有不同。对于引用值而言,可以随时添加、修改和删除其属性 和方法。比如,看下面的例子: <template> <div class="home_container">home</div> </...
  • 这个问题看马士兵的视频想到的,其实在Struts 2 Documentation里面已经规定的很清楚了。 Normally, in struts.xml you ... When using the default SpringObjectFactory, the framework will ask Spring to cr...
  • 他们有什么区别属性属性和字段的区别构造方法是什么?什么时候调用?特点小结 前言 叙述 修饰符 Java有哪些修饰符? public protected default private 他们有什么区别 default (即默认,什么也不写): 在同一包...
  • Struts2属性文件详解

    2010-02-11 03:10:11
    Struts2属性文件详解 struts.configuration 该属性指定加载Struts 2...该属性的默认值为struts- default.xml,struts-plugin.xml,struts.xml,看到该属性值,所以应该明白为什么Struts 2框架默认加载struts.xml文件了.
  • 缺省值是什么

    2019-03-13 14:59:00
    指一个属性、参数在被修改前的初始值。 计算机软件系统要求用户输入某些值而用户未给定时,系统自动赋予的事先设定的数值。 缺省,即系统默认状态。 转载于:...
  • 1、translatable意思是可译的;可转移的 2、在Android中这个属性为false的意思是,不用翻译成其它语种的语言了,例如: <string name="default_theme_name" ...意思就是不管系统是什么语言,它都只显示Material. ...
  • Symbol对象是什么

    2020-12-27 09:27:49
    我觉得最重要的属性,它的提出使对象可以使用迭代器遍历,之前只有Array,String等,这种内置Symbol.iterator属性的可以使用迭代器。ECMAScript旨在使JS中使用一种方法,比如</p><pre><code>for.....
  • 0056 CSS3属性选择器

    2019-12-22 20:00:38
    什么是 CSS3 在 CSS2 的基础上拓展、新增的样式 CSS3 发展现状 移动端支持优于 PC 端 CSS3 目前还草案,在不断改进中 CSS3 相对 H5,应用非常广泛 属性选择器列表 属性选择器代码演示 button { ...
  • 灰常好奇这两个属性是什么的,于是到网上看了下资料以及属性原本的英文注释。 两个属性的解释及参考例子 ① 属性produces:指定返回值类型,并且可以设置返回值类型和返回值的字符编码; 代码例子参考如下: /**...
  • JAVA中有四个权限访问修饰符:public,protected,default,private注意:这里讲的对类中属性和方法的访问权限,并不是类的访问权限1.default:包访问权限如果什么也没写,默认为default。当然也可以显式得给出...
  • 我们平时都是用defaultZone,这个defaultZone到底是什么,为什么一定要用defaultZone,换个别的行不行。网上很多文章都是入门的,不会讲到这一点。   default-zone != defaultZone 我是用idea来写application....
  • DefaultProperty("Text"), ToolboxData("")> 是什么意思? DefaultProperty 是设置控件默认的属性的。这里是其Text属性。就是当你选择这个控件的时候,在属性窗口中自动被选中的是Text属性。 ToolBoxData 的...
  • “ nyoibo”是什么意思? Nyoibo是他的祖父Son Gohan送给Son Goku的神秘工作人员。 用法 而不是这样做: class Example : def __init__ ( self , value = None , other_value = None , default = 'hello' ) self...
  • 利用Spring的BeanPostProcessor来修改bean属性 一、BeanPostProcessor是什么?什么时候触发?可以用来做什么? 1.它是什么? 首先它是一个接口,定义了两个方法: public interface BeanPostProcessor { @...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 639
精华内容 255
关键字:

default是什么属性