新手求助关于构造函数的问题

meantobe_bo 2014-07-28 02:30:49
class Screen{
public: typedef std::string::size_type pos;
Screen()=default;
Screen(pos ht,pos,wd,char c):height(ht),width(wd),contents(ht*wd,c){}
//省略
private:
pos cursor=0;
pos height=0,width=0;
std::string contens:
}

Screen scr(ht,wd,' ');

关于这个scr有点不理解,它是一个返回screen类型的函数名称?
还是一个screen的对象?
...全文
117 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
meantobe_bo 2014-07-28
  • 打赏
  • 举报
回复
scr是用构造函数初始化的对象?
meantobe_bo 2014-07-28
  • 打赏
  • 举报
回复
引用 4 楼 Saleayas 的回复:
如果括号里面是类型,那么就是函数签名。 如果括号里面是变量,那么就是实例化。 所以括号里面如果是空的,就不知道是什么,编译器假定为函数签名,所以如果是实例化的时候,不能添加括号。
实例化的话不应该是类名(参数)么?
alex_my 2014-07-28
  • 打赏
  • 举报
回复
这是一个对象。 简单的说,如果是一个函数,那么前边至少得声明吧。 下边是一个例子: #include <iostream> class Test { private: int m_data; public: Test(int a) : m_data(a) { std::cout << "Construct: " << m_data << std::endl; } Test(int a, double b) : m_data(a + (int)b) { std::cout << "Construct2: " << m_data << std::endl; } ~Test() { std::cout << "Destruct: " << m_data << std::endl; } }; int main(int argc, char** argv) { Test obj(1); obj = Test(2); obj = Test(3); return 0; } // 输出: Construct: 1 // 第一行构造 Construct: 2 // 第二行临时对象构造 Destruct: 2 // 第二行临时对象析构 Construct: 3 // 第三行临时对象构造 Destruct: 3 // 第三行临时对象析构 Destruct: 3 // obj对象析构。
Saleayas 2014-07-28
  • 打赏
  • 举报
回复
如果括号里面是类型,那么就是函数签名。 如果括号里面是变量,那么就是实例化。 所以括号里面如果是空的,就不知道是什么,编译器假定为函数签名,所以如果是实例化的时候,不能添加括号。
神奕 2014-07-28
  • 打赏
  • 举报
回复
screen时一个类,scr是screen的对象。
lionfresh 2014-07-28
  • 打赏
  • 举报
回复
screen 对象
  • 打赏
  • 举报
回复
这不就是一个对象么,返回啥啊

64,645

社区成员

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

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