内置类型的指针、引用,sizeof大小、虚函数大小
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
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 风格字符串
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不支持随机访问元素,但可以在任意位置插入删除元素而消耗很低的代价。
2 vector<int> ivec;
3 deque<int> ideq;
4 ilist[3]; //ERROR
5 ideq[3]; //OK
6 ivec[3]; //OK
关于string
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。