标签:用处 strcmp 级别 classname virt 析构函数 p12 als ase
例:
调整字段宽度的函数int width():
setw设置输出长度,setfill设置如果输出的整型不够长用什么填充
当main()函数的返回值为int,而函数内并没有出现return语句时,同样可以通过编译并正常运行。这是因为编译器在main()函数的末尾自动添加了return 0;的语句。所以,main()函数是C++程序经过特殊处理的函数。其他的返回值类型不是void的函数,如果没有使用return语句,编译器将报错。
考察如下程序。
#include <iostream>
using namespace std;
class A{
public:
A(){
cout<<"In default A constructor"<<endl;
}
};
A b;
int main()
{
cout<<"In main()"<<endl;
return 0;
}
编译运行以上代码输出:
main()函数带参数是用来提供用户向程序输入参数。main()所带的参数有固定格式,即int main(int argc,char* argv[]),其中argc代表参数的个数,argv数组中的每一个元素则保存命令行参数内容的字符串。考察如下程序。
#include <iostream>
using namespace std;
int main(int argc,char* argv[])
{
if(argc>1)
cout<<"Hello "<<argv[1]<<endl;
return 0;
}
Boolean A= false; if(A) { }
int a=3;
int a(3);
if switch
for while do..while
#include<iostream>
using namespace std;
int main()
{
int n,i,m;
cin>>n;
for(i=1;i<=n;i++)
m=m*i;
cout<<m<<endl;
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int s=0,t=1;
int n;
for(n=1;n<=100;n++)
{
t=t+n;
s=s+t;
}
cout<<"1到100的累加和为:"<<t<<endl;
return 0;
}
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};
double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};
balance[4] = 50.0;
eg:
#include <iostream>
#include <cstring>
using namespace std;
int main ()
{
char str1[11] = "Hello";
char str2[11] = "World";
char str3[11];
int len ;
// 复制 str1 到 str3
strcpy( str3, str1);
cout << "strcpy( str3, str1) : " << str3 << endl;
// 连接 str1 和 str2
strcat( str1, str2);
cout << "strcat( str1, str2): " << str1 << endl;
// 连接后,str1 的总长度
len = strlen(str1);
cout << "strlen(str1) : " << len << endl;
return 0;
}
编译执行后结果:
strcpy( str3, str1) : Hello
strcat( str1, str2): HelloWorld
strlen(str1) : 10
#include <iostream>
#include <string>
using namespace std;
int main()
{
char *cat(char *a,char *b);
char s1[50] = "please ",*s2 = "let me in.";
puts(cat(s1,s2));
return 0;
}
char *cat(char *a,char *b)
{
char *p = a,*q = b;
while(*p++);
p--;
while(*p++ = *q++);
*p = ‘\0‘;
return a;
}
该方法把参数的引用复制给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数对实际参数没有影响。
该方法把参数的引用(小名)复制给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。 [P97例5-4]利用引用编写交换函数swap() 程序代码如下:
#include<iostream>
using namespace std;
void swap(int &x,int&y)
{
int tmp=x;
x=y;
y=tmp;
}
int main()
{
int a=2,b=3;
cout<<"Before exchange:a="<<a<<",b="<<b<<endl;
swap(a,b);
cout<<"After exchange:a="<<a<<",b="<<b<<endl;
return 0;
}
编译执行后结果:
Before exchange:a=2,b=3
After exchange:a=3,b=2
eg:
void func(int x,int n1=1,int n2=2);
若使用func(5,4);的方式调用该函数,则X的值为5,n1的值为4,n2的值为2。
返回变量的地址。例如 &a; 将给出变量的实际地址。
指向一个变量。例如,*var; 将指向变量 var。
eg;
int *p =new int[size];
delete []p;
【内联函数不包含循环语句】
class
{
······
y;
}
<类型><类名>::<函数名>(<参数表>) {<函数体>}
#include <iostream>
#include <cstring>
using namespace std;
class Dog
{
char name[20];
char sex;
int age;
float weight;
public:
void Register(char * Name,int Age,char Sex,float Weight);
char * GetName()
{
return name;
}
int GetAge()
{
return age;
}
char GetSex()
{
return sex;
}
float GetWeight()
{
return weight;
}
void Speak()
{
cout<<"Arf!Arf!"<<endl;}
};
void Dog::Register(char * Name,int Age,char Sex,float Weight)
{
strcpy(name,Name);
age=Age;
sex=Sex;
weight=Weight;
}
int main()
{
char name[20];
char sex;
int age;
float weight;
Dog dog1;
cin>>name>>age>>sex>>weight;
dog1.Register(name,age,sex,weight);
cout<<"Dog ’ s name:"<<dog1.GetName() <<endl;
cout<<"Dog ’ s age:"<<dog1.GetAge()<<endl;
cout<<"Dog ’ s sex:"<<dog1.GetSex()<<endl;
cout<<"Dog ’ s weight:"<<dog1.GetWeight()<<endl;
cout<<"Dog speak:";
dog1.Speak();
return 0;
}
2.1构造函数与类同名,且没有返回值类型 2.2构造函数既可以在类外定义,也可以作为内联函数在类内定义 2.3构造函数允许重载
构造函数的形参还可以是本类的对象的引用,其作用是用一个已经存在的对象去初始化一个新的同类对象,也称为拷贝构造函数 格式
classname (const classname &obj) {
// 构造函数的主体
}
#include<iostream>
#include<string>
using namespace std;
class Dog
{
string name;
char sex;
int age,weight;
public:
Dog():name("dog2"),sex(‘f‘),age(2),weight(50) {} // 无参数初始化表
Dog(string Name,char Sex=‘m‘,int Age=3,int Weight=40); //带默认值的构造
void print();
};
Dog::Dog(string Name,char Sex,int Age,int Weight):name(Name),sex(Sex),age(Age),weight(Weight)
{
}
void Dog::print()//输出信息
{
cout<<"name is:"<<name<<endl;
cout<<"sex is:"<<sex<<endl;
cout<<"age is:"<<age<<endl;
cout<<"weight is:"<<weight<<endl;
}
int main()
{
string N="dog1";
char S;
int A,W;
/**************************************
有默认参数的构造函数
**************************************/ cout<<"使用有默认值的初始化:"<<endl;
cout<<"没有输入前的默认参数为:"<<endl;
Dog dog1(N);
dog1.print();
//输入数据
cout<<"输入狗名,年龄,性别,体重"<<endl;
cin>>N>>A>>S>>W;
Dog dog(N,S,A,W);
cout<<"输入数据后:"<<endl;
dog.print();
/********************************************** 使用初始化表
**********************************************/ Dog dog2;
cout<<"调用系统无参数初始化表:"<<endl;
dog2.print();
return 0;
}
声明格式:
class 派生类名:继承方式 基类名1,继承方式 基类名2
{
新增加的成员声明;
}
public(公用的):既可以被本类中的成员函数所引用,也可以被类的作用域内的其他函数(即类外)引用。【在派生类内和外部都可以访问】
private(私有的):只能被本类中的成员函数引用,类外不能调用(友元类除外)
protected(受保护的):不能被类外访问,但可以在派生类的成员函数访问。
可以这么简单的认为:
1、凡是基类中私有的,派生类都不可访问。
2、基类中除了私有的成员,在派生类中的访问属性总是 以安全性高{ 继承方式,基类的访问属性 } 的方式呈现。(安全性级别:私有>保护>公有)
p250 参考例11-3
#include<iostream>
#include<cstring>
using namespace std;
class Person
{
cahr Name[10]; //姓名
int Age;
public:
Person(char*name,int age)
{
strcpy(Name,name);
Age=age;
cout<<"constructor of person"<<Name<<endl;
}
~Person()
{
cout<<"deconstructor of person"<<Name<<endl;
};
class Student:public Person
{
char ClassName[10]; //班级
Person Monitor; //班长 内嵌对象
public:
Student(char*name,int age,char *classname,char *name1,int age1):Person(name,age),Monitor(name1,age1)
{
strcpy(ClassName,classname);
cout<<"constructor of Student"<<endl;
}
~Student()
{
cout<<"deconstructor of Student"<<endl;
}
};
int main()
{
Student stu("张弓长",18,"计算机51","李木子",20);
return 0;
}
#include<iostream>
#include<cmath>
using namespace std;
const double PI=3.1415926;
class Circle
{
protected:
double c_r;
public:
Circle(double r)
{
c_r=r;
}
};
class Circular:public Circle
{
double c_h;
public:
Circular(double r,double h):Circle(r)
{
c_h=h;
}
double GetCircular_t()
{
return PI*c_r*c_r*c_h;
}
double GetCircular_b()
{
return (2*PI*c_r*c_h)+(2*PI*c_r*c_r);
}
void ShowCircular()
{
cout<<"圆柱体的体积 ="<<GetCircular_t()<<endl;
cout<<"圆柱体的表面积 ="<<GetCircular_b()<<endl;
}
};
int main()
{
Circular b(10,10);
b.ShowCircular();
return 0;
}
关键字 virtual 格式:
virtual 函数返回类型 函数名() {函数体}
定义p269
virtual 函数类型 函数名(形参表列)=0;
Class Animal{
Public:
virtual void show() = 0;//纯虚函数的表达
};
1. const是函数类型的一部分,在实现部分也要带该关键字。
2. const关键字可以用于对重载函数的区分。
3. 常成员函数不能更新任何数据成员,也不能调用该类中没有用const修饰的成员函数,只能调用常成员函数和常数据成员。
1.函数模板的定义及使用p291 函数模板:是一种抽象通用的函数,用它可生成一批具体的函数。这些由函数模板实例化生成的具体函数称为模板函数。
template<typename T>
<类型><函数名>(<参数表>)
{
···
}
friend <返回类型> <函数名> (<参数列表>);
标签:用处 strcmp 级别 classname virt 析构函数 p12 als ase
原文地址:https://www.cnblogs.com/clzhao18-625/p/9223805.html