和三石sama一起养猪:i没有声明,你隔这玩脑经急转弯呢?
投递字节跳动等公司10个岗位 >
0 点赞 评论 收藏
分享
BewareMyPower: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
0 点赞 评论 收藏
分享
关注他的用户也关注了: