内置类型的指针、引用,sizeof大小、虚函数大小
1
char
yinyong
=
10
;
2
char
&
z
=
yinyong;
3
cout
<<
sizeof
(z)
<<
endl;
4
5
int
intee
=
10
;
6
int
&
intez
=
intee;
7
cout
<<
sizeof
(intez)
<<
endl;
8
9
char
*
zz
=
&
yinyong;
10
cout
<<
sizeof
(zz)
<<
endl;
输出结果为1 4 4
内置类型的指针的sizeof值是:4
代码
1
#include
<
iostream
>
2
using
namespace
std;
3
4
class
Base{
5
public
:
6
Base(){
7
cout
<<
"
construction
"
<<
endl;
8
}
9
virtual
void
myfun(){};
10
private
:
11
int
ival;
12
};
13
14
void
main()
15
{
16
Base mybase;
17
cout
<<
"
sizeof mybase is :
"
<<
sizeof
mybase
<<
"
\nEND
"
<<
endl;
18
}
Output:
虚函数、整型ival各需要4 byte,总计8byte。
如果注释掉9、10、11行,输出大小为1。也就是说一个类内没有任何成员变量、成员函数、虚函数,它的sizeof大小为 1 byte。
string对象中的字符处理
我们经常要对string对象中的单个字符进行处理,例如通常需要知道某个特殊字符是否为空白字符、字母或者数字。这些函数定义在cctype头文件中。
isdigit(c) 是否是数字 islower(c) 是小写字母 isupper(c) 是大写字母 isspace(c) 是空白字符
ispunct(c) 是标点符号 tolower(c) 转换成小写字母 toupper(c) 转换成大写字母 isalpha(c) 是字母?
解引用操作符* 和 自增操作符++ 的优先级
*iter++
++的优先级高于*。
string实际上也是C-style 风格字符串
string
mystring
=
"
meng
"
;
cout
<<
mystring.size()
<<
endl;
if
(mystring[
4
]
==
NULL)
cout
<<
"
true
"
<<
endl;
运行的结果是,4 true
这说明string对象的末尾也有个NULL。
mystring.length() 结果也是4。
vector, list, deque 容器
vector, deque都支持容器的随即访问,vector插入删除非末端元素耗费代价高。deque插入删除非两端位置元素代价高。
list不支持随机访问元素,但可以在任意位置插入删除元素而消耗很低的代价。
1
list
<
int
>
ilist;
2
vector
<
int
>
ivec;
3
deque
<
int
>
ideq;
4
ilist[
3
];
//
ERROR
5
ideq[
3
];
//
OK
6 ivec[3]; //OK
关于string
1
string
str
=
"
Stately plump Buck
"
;
2
char
*
cp
=
"
Stately plump Buck
"
;
3
string
s1(str,
7
), s2;
4
s2.assign(cp,
7
);
5
cout
<<
s1
<<
endl;
6
cout
<<
s2
<<
endl;
打印结果为
空格plump Buck
Stately
空类的sizeof大小
空类指的是里面只有非virtual成员函数的类,并且不继承任何类,无成员变量。其sizeof大小为1。