打印

C++primer上的问题

[复制链接]
3445|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinadz|  楼主 | 2012-6-8 16:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1
class Screen
{
public:
private:
    std::
string::size_type cursor;
}

1.这个std::string::size_type cursor;是什么意思,第二个::是什么意思,这个是C++primer上的,它上面的程序都没有
using namespace std;所以第一个要用std::那么第二个呢,还有,这个size_type是什么意思,前面都没出现过,怎么突然冒 出来,

相关帖子

沙发
sinadz|  楼主 | 2012-6-8 16:08 | 只看该作者
2
class Screen
{
public:
    typedef std::string::size_type index;
private:
    std::string contents;
    index cursor;
    index height,width;
}

书上说,使用类型别名来简化类,但是我觉得定义的私有数据应该不会很多吧,那么又用个别名有必要吗,会不会影响可读性,有什么好处吗。
3.在类中定义的成员函数,都将自动作为inline函数处理吗,一般的别人写程序会显示定义inline函数吗?

使用特权

评论回复
板凳
sinadz|  楼主 | 2012-6-8 16:08 | 只看该作者
4
class Record
{
    typedef std::size_t size;
    Record():byte_count(0){}
    Record(size,s):byte_count(s){}
    Record(std::string s):name(s),byte_count(0){}
    size byte_count;
    std::string name;
public:
    size get_count() const {return byte_count;}
    std::string get_name() const {return name;}
}
问下这个程序的构造函数都成了私有数据了,这样怎么调用构造函数,平常写程序的时候构造函数好像都是在public下的,求大侠帮忙解释下,谢谢了

使用特权

评论回复
地板
火箭球迷| | 2012-6-8 16:18 | 只看该作者
::是命名空间;3是的;4是防止被调用

使用特权

评论回复
5
txcy| | 2012-6-8 16:30 | 只看该作者
1、size_type是std::string的嵌套类型,定义如下:
typedef typename _CharT_alloc_type::size_type size_type;
2、各有利弊,重命名好了事半功倍,命名不好还不如直接用原来的定义
3、一般会,这要看编译器和你写的函数的复杂度。stl和boost库中到处是inline的显示定义
4、私有化构造函数后可以定义静态内部变量和静态函数来内部调用构造函数,私有只是对外部的,内部还是可以调用的。经典应用是定义单例模式

使用特权

评论回复
6
gxgclg| | 2012-6-8 16:42 | 只看该作者
1. size_type和size_t类似,但前者是容器里面的概念,而size_t不是。string中的size函数返回的数据类型其实是size_type。你可以把string::size_type看做是一个数据类型,因为size_type是在string中定义的。

2. 这个纯粹看个人喜好,两可。

3. inline主要用于提示编译器,如果可能就将成员函数做inline处理。即使在成员函数前没有inline修饰,如果可能编译器也会将该成员函数做inline处理。因此,现在很多人认为inline这个关键字基本上没有什么用处了。

4. 构造函数私有是很正常的,其用意就是不能在类的外部使用构造函数。典型地,Singleton(单例)设计模式,就必须要让一个类的构造函数是私有的。具体的做法可以参考:C++实现Singleton模式

使用特权

评论回复
7
chenyingzhang| | 2018-12-12 15:10 | 只看该作者
如何正确的通过 C++ Primer 学习 C++? 本人即将读研,虽然考的是本专业(GIS),但是研究生读的专业在计算机学院,要求所有研究生都要会编程。本科期间学过C++,但是基本忘的差不多。现在暑假已经被要求到学院搞项目,但是因为对编程只有概念上的认识,所以现在都是在自学C++。这几天开始从头看C++ primer,但是因为基础实在薄弱,很多内容看很久都看不懂,上网查资料也是一片模糊。看了几天之后,觉得我学习的方法有问题(我是每天都在练习他的习题)。我知道学习程序语言要多敲代码,但是这个敲代码不知道从哪里入手,看书也不知道哪些是重点,哪些现在可以不看的。完全没有一个详细的规划,很乱。求大神给些意见!谢谢!!

使用特权

评论回复
8
斌斌GTW| | 2018-12-12 15:27 | 只看该作者
chenyingzhang 发表于 2018-12-12 15:10
如何正确的通过 C++ Primer 学习 C++? 本人即将读研,虽然考的是本专业(GIS),但是研究生读的专业在计算 ...

从C语言开始入门 C++语言本身很杂,对初学者来说不是太好上手。C语言出现年代更早且C++设计的时候就是要在C上添加面向对象支持。语言相对基础,对于新手可谓是很实用的,C语言的语法规范大致上是C++的一个子集,语法简单,没有C++的各种让人困惑的高级特性,学起来相对简单直接。学到 一定程度以后,C++,要尽量避免C的写法。用static_cast而不是括号转换符;用vector而不是C里面的数组;用string而不是char *;用智能指针而不是原始指针。当然I/O是个例外,printf()还是比cout好用的;转换数字和字符串时sprintf()也比stringstream快

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝