C++Primer 第三章
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++Primer 第三章相关的知识,希望对你有一定的参考价值。
//1.位于头文件中的代码一般不应该使用using声明。这是因为头文件的内容会拷贝到所有引用它的文件中,可能会产生始料未及的命名空间冲突。 // 三种使用命名空间中的名字的方法 using namespace std; //最好不要在头文件中使用,容易造成命名空间名字污染,导致命名冲突 using std::string; std::string; //2.头文件cctype中定义了一组对字符进行操作的函数 // isalnum(), isalpha(), iscntrl(), isdigit(), isgraph(), isprint(),ispunct(), isspace(), isupper(), isxdigit(), tolower(), toupper() //3.对于运算符&&来说,只有左侧求值为TRUE,才会继续对右侧求值 //4.在不清楚使用哪种类型的容器的时候,使用迭代器对容器的元素进行操作,并使用迭代器共有的操作(*it, it->men, ++it, --it, it1 == it2, it1 != it2),这样在更换容器的时候很便利。 vector<int> vecInt(10); //vecInt中存放着10个0,此时会进行值初始化 vector<int>::iterator itVec = vecInt.begin(); //5.数组中元素的个数也是数组类型的一部分,编译时维度应该是已知的,所以其维度必须是一个常量表达式。 char buff[10] = "szn"; //允许使用一个字符串常量去初始化字符数组 buff是可读可写的 char *str = "szn"; //最好不要这样使用 /* C++03中的字符串常量const char[N]当具有显而易见的目标类型时,作为一个限定修饰的转换的结果是char*,这是一个废弃条款,已经在C++11中予以废弃, 就是说,在C++03中,char *tem="szn";是合法的但在C++11中是非法的,C++11必须这样写:const char * tem = "szn"; 在C中,双引号括起来的字符序列不叫字符串常量,它仅仅是字符串字面量,C的字符串字面量并不属于常量,因为C的常量和常量表达式只能是编译期的。C++中的字符串字面量才能称为字符串常量。 C中的字符串字面量类型是char[N],数组到指针的转换结果为char*,而C++中的字符串常量类型是const char[N],数组到指针的转换结果是const char*。 */ //6.数组的一个特性:在很多用到数组名的地方,编译器会自动将其替换为一个指向数组首元素的指针,并且此指针会失去所有数组的特性。 //7.C++11新标准引入了两个名为begin(),end()的函数,用法与容器的同名函数类似。可以作用于内置数组。定义在头文件iterator中。 //8.内置类型的下标运算符中的值可以为负数,但是标准库类型限定其使用的下标必须为无符号类型。
以上是关于C++Primer 第三章的主要内容,如果未能解决你的问题,请参考以下文章