搜索
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ 拷贝初始化 vector<int> = 10;为什么是错的
标题:
拷贝初始化 vector<int> = 10;为什么是错的
取消只看楼主
令狐少侠56
等 级:
论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
结帖率:
58.18%
楼主
已结贴
√
问题点数:13 回复次数:2
拷贝初始化 vector<int> = 10;为什么是错的
拷贝初始化 vector<int> = 10;为什么是错的
这里C++primer说接受大小参数的构造函数是explicit的
我明白了explicit型的构造函数无法对参数转变类型。
可是这句话哪里调用构造函数了?
2017-03-10 10:06
令狐少侠56
等 级:
论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
第
2
楼
得分: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
令狐少侠56
等 级:
论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
第
3
楼
得分:0
以下是引用
rjsp
在2017-3-11 16:48:04的发言:
没有区别
那这样的话foo a( 1 ); foo b = 2; 不就都向构造函数传递的是整数了么?
2017-03-11 22:08
3
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-474919-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.139587 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved