定义时如果没有初始值系统将默认初始化,初始化的值会根据变量的类型和定义位置来定;
函数之外的变量将会被初始化为默认的值,int为0,string 为空;但函数内的变量将不会被初始化,因为他在栈区,初始化的方式新增了列表初始化,用{}初始化;以及()初始化,()初始化像极了调用构造函数;
//四种初始化方式
int sold = 0;
int sole = {0};
int solr{ 0 };
int solt(0);
实际上这些都是指令,都是函数,string(n,‘x’);可以认为是string类的含参构造函数;
string ss("sssss");也可以认为是一种构造函数;
string ss(string &s)是拷贝构造函数;仅此而已;
string 类的操作:
os<<s,
is>>s;
getline(is,s);(从某个文件或显示器中读取一行,赋给s);
s.empty(),s.size();s[n]以数组的形式看待string类,随机访问一个元素;
重载符号:+。-,==,!=,<.<=,>,>=
s.size()的返回值是无符号的整数;
ctype头文件里的函数:
ctype中的函数:
isalnum(c)
isalpha(c)
iscntrl(c)
isdigit(c)
isgraph(c)
islower(c)
isprint(c)
ispunct(c)
isspace(c)
isupper(c)
isxdigit(c)
tolower(c)
tiupper(c)
使用范围for语句改变字符串中的字符:
可以使用auto&的方式;
string s("Hello,world");
for(autc&s:s){
c=toupper(c);//c是一个引用,赋值语句将修改s中字符的值;
}
cout<<S<<endl;
C++提供了两种调用构造函数的方式,显式调用和隐式调用;
class Stock{ public: Stock(); Stock(const int&age,const int&ss); private: int m_age; string m_ss; }; Stock::Stock(){ } Stock::Stock(const int&age,const int&ss){ m_Age=age; m_ss=ss; } //显式调用; Stock s=Stock("ss",20); //隐式调用; Stock("ss",20); 提供默认构造函数的方式:系统隐式提供,重载,给含参构造函数提供默认值; //提供默认参数 Stock::Stock(const string&s="error",int n=0){} //重载 Stock::Stock(){}
隐式的调用默认构造函数时,不要使用(),否则会认为是函数的声明;