广州网融信息:今天的笔试题


#include "stdafx.h"

struct MyStruct
{
MyStruct(int){}
MyStruct(){}
void fun(){}

};

int main()
{
MyStruct a();
MyStruct b(1);
a.fun();//此处出错   有好心人能告诉我为什吗???
b.fun();
return 0;
}

#笔试题目#
全部评论
C++的经典语法错误,都是C把声明和定义分离开的锅,而且可以随便声明,只要符合语法,因为声明的函数可能在其他源文件中定义。比如A func();编译器会怎么看呢?我这里命名为func可能会造成的一个假象,就是这是个函数。编译器不会这么看,他会把这句看成一个函数声明,返回类型为A,无输入参数。那么A a();呢?这么一看是不是又像声明一个A类型的变量a呢?然后两句话是一样的。在C++11中尽量使用大括号来代替圆括号来构造对象 // 类声明 struct A { A() {} A(int) {} A(const A&) {} }; // 对象构造 A a1{}; A a2{1}; A a3{a1}; 唯一需要注意的是如果有接受std::initializer_list类型的构造函数(比如STL的vector),大括号初始化会优先匹配这个。 vector<int> v1{3, 1}; // 存放3 1,而非1 1 1 vector<char> v2{3, 1}; // 存放3 1,而非1 1 1 vector<double> v3{3, 1.0}; // 存放3 1.0,而非1.0 1.0 1.0
点赞 回复 分享
发布于 2018-06-12 18:29
哪家公司的笔试题呢
点赞 回复 分享
发布于 2018-06-12 16:31
因为a是个函数
点赞 回复 分享
发布于 2018-06-12 16:36
你这个a的初始化有问题啊 应该是MyStruct a;加了括号就不对了,函数才这样申明啊
点赞 回复 分享
发布于 2018-06-12 16:40

相关推荐

程序员鼠鼠_春招版:我要12k吧我挂了,还招呢,天天被割,这点钱都不舍得出
点赞 评论 收藏
分享
黑皮白袜臭脚体育生:简历条例统一按使用了什么技术实现了什么功能解决了问题或提升了什么性能指标来写会好些,如使用布隆过滤器实现了判断短链接是否存在,大大提升了查询速度
点赞 评论 收藏
分享
02-11 17:51
腾讯_TEG_技术
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务