C++小知识点

半腔热情 提交于 2020-01-29 04:19:43

内置类型的指针、引用,sizeof大小、虚函数大小

 1     char yinyong = 10;
 2     char &= 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。 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!