| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2140 人关注过本帖
标题:拷贝初始化 vector<int> = 10;为什么是错的
只看楼主 加入收藏
令狐少侠56
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
结帖率:58.18%
收藏
已结贴  问题点数:13 回复次数:6 
拷贝初始化 vector<int> = 10;为什么是错的
拷贝初始化 vector<int> = 10;为什么是错的
这里C++primer说接受大小参数的构造函数是explicit的
我明白了explicit型的构造函数无法对参数转变类型。
可是这句话哪里调用构造函数了?
2017-03-10 10:06
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:13 
Type a = b;
等同于 Type a( b );
调用构造函数
2017-03-10 10:28
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <iostream>

struct foo
{
    /*explicit*/ foo( int v ) : v_(v)
    {
        std::cout << "foo(" << v_ << ")\n";
    }
   

private:
    int v_;
};


int main( void )
{
    foo a( 1 );
    foo b = 2; // 如果foo::foo加了explicit限制则失败
    foo c{ 3 };
    foo d = { 4 }; // 如果foo::foo加了explicit限制则失败
}

输出:
foo(1)
foo(2)
foo(3)
foo(4)
2017-03-10 10:35
令狐少侠56
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
收藏
得分:0 
以下是引用rjsp在2017-3-10 10:35:37的发言:

#include <iostream>

struct foo
{
    /*explicit*/ foo( int v ) : v_(v)
    {
        std::cout << "foo(" << v_ << ")\n";
    }
   

private:
    int v_;
};


int main( void )
{
    foo a( 1 );
    foo b = 2; // 如果foo::foo加了explicit限制则失败
    foo c{ 3 };
    foo d = { 4 }; // 如果foo::foo加了explicit限制则失败
}
输出:
foo(1)
foo(2)
foo(3)
foo(4)

如果 Type a = b;等同于 Type a( b );调用构造函数,
那么这里 foo b = 2;b调用的构造函数和a调用的构造函数有区别吗?
2017-03-10 22:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
回复 4楼 令狐少侠56
没有区别
2017-03-11 16:48
令狐少侠56
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
收藏
得分:0 
以下是引用rjsp在2017-3-11 16:48:04的发言:

没有区别

 那这样的话foo a( 1 ); foo b = 2; 不就都向构造函数传递的是整数了么?
2017-03-11 22:08
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
回复 6楼 令狐少侠56
怎么啦?
2017-03-12 01:54
快速回复:拷贝初始化 vector<int> = 10;为什么是错的
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016279 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved