自学C++遇到的两个疑问,求指教

bandaoyu 2018-01-20 03:10:17
我知道有人会让我回去看书,但是我是用到别人的工程现学的,所以学习不系统,从头看起肯定来不及,所以只能边用边学


1、: Value() { setType(type); }表示什么意思?
/**
* Construct to a specific type
* @param value
*/
Value(Type type) : Value() { setType(type); }


表示什么意思? 我只知道:表示继承,但是一般都是继承一个类,这里怎么是个函数:Value() { setType(type); }? 而且函数没有返回值在函数名前面却没有void





这里也是:
template <typename T>
Value(const std::vector<T> &input) : Value(Type::Array)
{
// index
int i = 0;

// set all elements
for (auto &elem : input) setRaw(i++, elem);
}

表示继承 Value(Type::Array) 返回的类吗?


2、下面的尖括号表示什么?

vector<int>::iterator iter;


friend class HashMember<int>;
friend class HashMember<std::string>;


还有更复杂的,尖括号里面是个函数,它的返回值作为<>里的参数?
/**
* Friend functions which have to access that zval directly
*/
friend Value set_exception_handler(const std::function<Value(Parameters ¶ms)> &handler);
friend Value set_error_handler(const std::function<Value(Parameters ¶ms)> &handler, Error error);


3、operator
/**
* Comparison operators for hardcoded Value
* @param value
*/
bool operator==(const Value &value) const;
bool operator!=(const Value &value) const { return !operator==(value); }
bool operator< (const Value &value) const;
bool operator> (const Value &value) const { return value.operator<(*this); }
bool operator<=(const Value &value) const { return !operator>(value); }
bool operator>=(const Value &value) const { return !operator<(value); }

上面定义的操作operator都声明了返回值的类型,而下面这个却没有,为什么?
/**
* Cast to a number
* @return int32_t
*/
operator int16_t () const
{
return (int16_t)numericValue();
}

/**
* Cast to a number
* @return int32_t
*/
operator int32_t () const
{
return (int32_t)numericValue();
}

/**
* Cast to a number
* @return int64_t
*/
operator int64_t () const
{
return numericValue();
}



以上的代码出自:http://www.php-cpp.com/download 可以把工程下下来看,在value.h里面


...全文
649 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cycloveu 2018-01-22
  • 打赏
  • 举报
回复
1、: Value() { setType(type); }表示什么意思? /** * Construct to a specific type * @param value */ Value(Type type) : Value() { setType(type); } 回答: Value(Type type) 带一个参数的构造函数; :Value() 初始化参数列表,表示调用无参的构造函数。 { setType(type); }函数体。 你可以这样分解: Value(Type type) { setType(type); } Value(Type type) : Value();
AlbertS 2018-01-22
  • 打赏
  • 举报
回复
Value(Type type) : Value() { setType(type); }表示 一个有参数的构造函数 Value(Type type)调用了一个无参数的构造函数,然后在函数体中又调用了setType(type);函数,来使用传进来的参数
usecf 2018-01-22
  • 打赏
  • 举报
回复
构造函数 定义的时候 是不需要返回值得
大风哉 2018-01-21
  • 打赏
  • 举报
回复
引用 2 楼 bandaoyu 的回复:
[quote=引用 1 楼 dafengmi 的回复:] 楼主,这里面可能涉及到模板的内容了,你针对性看看C++类模板的内容。这里一下子说不清的。 你这里在搞PHP和C++结合的东西吗?
是呀,严格的说是C,相当蛋疼的东西。 有个C库clib.a要给php调用,并且给clib.a库中的myComm需要php给一个回调函数,因为php无法直接调用C库,所以我用第三方库C++库:PHP-CPP,封装(引用)clib.a给php写了一个扩展。 具体可以看这里:https://www.zhihu.com/question/265844595 还有:http://bbs.csdn.net/topics/392309417 http://bbs.csdn.net/topics/392309947 问题都没有解决,所以只能硬着头皮研究源码了 [/quote] PHP没有用过,说不上来,大概意思是要用PHP调C的函数,C这边任务做完后,再调用PHP的函数。 楼主现在是有解决方案了,那就针对性地对C++要用到的这部分内容进行突破。建议找个能直接交流的人对C++部分执行过程进行分析,你这样基础不够,猜的成分比较多,容易出错,还是不要侥幸的好。
bandaoyu 2018-01-21
  • 打赏
  • 举报
回复
引用 3楼paschen 的回复:
1、构造函数,冒号后面是构造函数初始化列表,后面大括号是构造函数的实现部分,知继承没关系,且构造函数不需要加返回值(析构函数也是)。 2、template定义的是模板,使用时要用要实例化模板参数,尖括号中的int表示用int进行实例化,见多不怪 3、下面这些是类型转换,operator int16_t () const转换成 int16_t类型,同理其他
嗯,非常感谢
bandaoyu 2018-01-21
  • 打赏
  • 举报
回复
引用 4楼paschen 的回复:
此外建议楼主先把基础打好,同时循序渐进,不要杂乱无章的看这些,只会把自己搞晕
谢谢你的建议。不过你应该是一个粗心的人,我在第一句话已经说明了我为何境况
paschen 版主 2018-01-21
  • 打赏
  • 举报
回复
此外建议楼主先把基础打好,同时循序渐进,不要杂乱无章的看这些,只会把自己搞晕
paschen 版主 2018-01-21
  • 打赏
  • 举报
回复
1、构造函数,冒号后面是构造函数初始化列表,后面大括号是构造函数的实现部分,知继承没关系,且构造函数不需要加返回值(析构函数也是)。 2、template定义的是模板,使用时要用要实例化模板参数,尖括号中的int表示用int进行实例化,见多不怪 3、下面这些是类型转换,operator int16_t () const转换成 int16_t类型,同理其他
bandaoyu 2018-01-20
  • 打赏
  • 举报
回复
引用 1 楼 dafengmi 的回复:
楼主,这里面可能涉及到模板的内容了,你针对性看看C++类模板的内容。这里一下子说不清的。 你这里在搞PHP和C++结合的东西吗?
是呀,严格的说是C,相当蛋疼的东西。 有个C库clib.a要给php调用,并且给clib.a库中的myComm需要php给一个回调函数,因为php无法直接调用C库,所以我用第三方库C++库:PHP-CPP,封装(引用)clib.a给php写了一个扩展。 具体可以看这里:https://www.zhihu.com/question/265844595 还有:http://bbs.csdn.net/topics/392309417 http://bbs.csdn.net/topics/392309947 问题都没有解决,所以只能硬着头皮研究源码了
大风哉 2018-01-20
  • 打赏
  • 举报
回复
楼主,这里面可能涉及到模板的内容了,你针对性看看C++类模板的内容。这里一下子说不清的。 你这里在搞PHP和C++结合的东西吗?

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧