首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为什么c++支持这种神奇的语法?求解解决思路

2012-04-16 
为什么c++支持这种神奇的语法??求解#includeiostream#includestringusing namespace stdint main(){i

为什么c++支持这种神奇的语法??求解
#include<iostream>
#include<string>
using namespace std;
int main()
{
int a(9);
string s("I love you!");
cout<<a<<endl;
cout<<s<<endl;
return 0;
}

结果输出:
9
I love you!

如果说string是调用构造函数初始化对象s,那int,char等类型也是用类或者结构体实现的?这种写法的真正过程是什么

[解决办法]
《C++ primer中文版第四版》 P42 里面有讲到int的初始化;

C/C++ code
int i(10);//直接初始化int i = 10;复制初始化
[解决办法]


我觉得有可能是为了方便模板:
C/C++ code
template<typename T>void fun(T arg){    T tmp(arg); // 想想看,如果没有“int n(99);”这样的语法 ,那这里就不合法了。                // ps:C语言支持这样的语法吗?    ...}
[解决办法]
int i(9);
相当于
int i = 9;
但是
string s("I love you!");
这个是调用了string类的构造函数
string::string(char * psz);
用来初始化对象s。
实现上这个string目前是个模板了,但和楼主想要问的问题无关

[解决办法]
c++ primer4

A definition specifies a variable's type and identifier. A definition may also provide an initial value for the object. An object defined with a specified first value is spoken of as initialized. C++ supports two forms of variable initialization: copy-initialization and direct-initialization. The copy-initialization syntax uses the equal (=) symbol; direct-initialization places the initializer in parentheses:

热点排行